Вообщем сейчас убегаю, завтра подниму свои UDF-ки, вспомню и доложусь...
Вот освежил память. Набросал UDF:
function gettype(v : PDSC) : integer; cdecl;
begin
Result := v.dsc_dtype;
end;
DECLARE EXTERNAL FUNCTION GETTYPE
VARCHAR(100) BY DESCRIPTOR
RETURNS INTEGER BY VALUE
ENTRY_POINT 'GETTYPE' MODULE_NAME 'TstUdf'
запрос
select gettype(1), gettype('1'), gettype(current_date) from rdb$database
возвращает
9, 1, 14
То бишь в Udf передаются по by descriptor именно то, что в параметр
запихнул, без cast-ов.
А вот если результат объявить как varchar(100) by descriptor ,то похоже
если в нем возвращать int или любой другой тип, после получения его из UDF
он будет кастится к varchar(100) ...
With b/r. Gleb.