Subject Re: User Defined Functions and PreparedStatement class
Author sergeybervinov
пНЛЮ, ХГБХМХРЕ, МН Ъ ОЕПЕИДС МЮ ПСЯЯЙХИ, Ю РН Я ЮМЦКХИЯЙХЛ С ЛЕМЪ
ОПНАКЕЛШ Х Ъ ОЕПЕБНФС МЕ ЯЮЛ, Ю ОПНЬС КЧДЕИ.

рЮЙ БНР. пНЛЮ, Ъ МЕ ПЮАНРЮЧ ВЕПЕГ ISQL. ъ ХЯОНКЭГСЧ IBExpert. б МЕЛ Ъ
БШОНКМЪЧ ПЕЦХЯРПЮЖХЧ ЯБНЕИ UDF ЯКЕДСЧЫХЛ НАПЮГНЛ:

DECLARE EXTERNAL FUNCTION MD5
CSTRING(255),
CSTRING(32)
RETURNS PARAMETER 2
ENTRY_POINT 'StringToMD5String' MODULE_NAME 'md5udf'

Х РНЦДЮ Ъ ЯЛЕКН ХОНКЭГСЧ ЯБНЧ UDF.

рЕОЕПЭ Ъ ПЕЬХК ОНОПНАНБЮРЭ ЙЮЙ ФЕ НАЯРНЪР ДЕКЮ Я ISQL.
оНЯЛНРПХРЕ ПЕГСКЭРЮР ПЮАНРШ ISQL.

---------------------------------
C:\DB\Interbase\Firebird\bin>isql
Use CONNECT or CREATE DATABASE to specify a database
SQL> CONNECT 'P:\db\mobile.gdb' USER 'SYSDBA' PASSWORD 'masterkey';
Database: 'P:\MobileAdmin\etc\db\mobile.gdb', User: SYSDBA
SQL> select md5('abc') from rdb$database;

MD5
================================
900150983cd24fb0d6963f7d28e17f72

SQL>
---------------------------------

йЮЙ БШ БХДХРЕ, ГДЕЯЭ ЛМЕ ПЕЦХЯРПЮЖХЪ ТСМЙЖХХ МЕ ОНМЮДНАХКЮЯЭ. ъ
ОПНЯРН ЯНЕДХМХКЯЪ Я АЮГНИ Х АЕГ ПЕЦХЯРПЮЖХХ ХЯОНКЭГНБЮК ЯБНЧ ТСМЙЖХЧ.

мН ЙНЦДЮ Ъ ХЯОНКЭГСЧ UDF Б PreparedStatement, МН МЮ ЩРЮОЕ ондцнрнбйх
SQL-ХМЯРПСЙЖХХ (ХЛЕММН ОНДЦНРНБЙХ) БНГМХЙЮЕР Exception. р.Е.
Exception БНГМХЙЮЕР Б ЯРПНЙЕ

PreparedStatement pstmt = connection.prepareStatement(
"SELECT id " +
"FROM users " +
"WHERE UPPER(user_login) = UPPER(?) AND " +
" user_password = MD5(?)"
);

йЮЙ ЛМЕ АШРЭ? лМЕ МСФМН ОЕПЕД ЩРХЛ БШОНКМХРЭ ЙНЛЛЮМДС DECLARE
EXTERNAL FUNCTION? еЯКХ ДЮ, РН ЦДЕ ЩРН ДЕКЮРЭ?

ъ ХЯОНКЭГСЧ ЙКЮЯЯ FBWrappingDataSource Я ОСКНЛ ЯНЕДХМЕМХИ. цДЕ ЛМЕ
ЩРН БШОНКМЪРЭ? бЕДЭ Ъ МЕ ЯНГДЮЧ ЯНЕДХМЕМХЪ ЯЮЛ. ъ ХУ АЕПС ХГ БЮЬЕЦН
ОСКЮ. х ЕЫЕ НДМЮ РНМЙНЯРЭ. еЯКХ Ъ ОНЯКЕ ЙЮФДНЦН
dataSourse.getConnection() АСДС БШОНКМЪРЭ ПЕЦХЯРПЮЖХЧ БЯЕУ
ХЯОНКЭГСЕЛШУ ЛМНИ UDF, РН Н ЯЙНПНЯРХ ПЮАНРШ ОПХКНФЕМХЪ Я АЮГНИ ДЮММШУ
ЛНФМН АСДЕР ОПНЯРН ГЮАШРЭ. ю Ъ МЕ РНКЭЙН ЩРС UDF ХЯОНКЭГСЧ. ъ
ХЯОНКЭГСЧ Х ЕЫЕ МЕЯЙНКЭЙН ДПСЦХУ.

---------------
Sergey Bervinov
Java Programmer
EMail: sergey_bervinov @ mail.ru
sergey_bervinov @ hotbox.ru
ICQ: 98681963