Я создал пользовательскую функцию для SQL в DB2 под ZOS.
Функция вызывается, но не получает никаких переданных данных.
Моя команда выглядит примерно так:
SELECT TESTUDF(COLUMN) FROM QUALIFIER.TABLE
Оператор выбора показывает данные в JCL, если я пропущу часть TESTUDF, поэтому я знаю, что есть данные. Функция вызывается, но ничего не передается.
CREATE FUNCTION TESTUDF(VARCHAR(44))
RETURNS VARCHAR(44)
EXTERNAL NAME 'TESTUDF'
LANGUAGE C
PARAMETER STYLE SQL
PROGRAM TYPE MAIN
DETERMINISTIC
NULL CALL
NO SQL
WLM ENVIRONMENT D10AWLM
NO EXTERNAL ACTION;
Я изначально пробовал с CLOB
, затем изменил на varchar
В любом случае, моя программа на C ничего не видит.
Я попробовал объявление функции c с помощью:
void main(char *lob){
void main(char *lob, char *retData){
void main(char *lob, char *retData,
SQLUDF_NULLIND *in1null,
SQLUDF_NULLIND *out1null,
SQLUDF_TRAIL_ARGS){
(он был объявлен как SQLUDF_CLOB * lob перед переключением на символ)
Но мой указатель lob всегда нулевой.
Любой совет приветствуется