Пользовательская функция для sql для Db2 не получает данные, переданные в - PullRequest
0 голосов
/ 15 мая 2019

Я создал пользовательскую функцию для 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 всегда нулевой. Любой совет приветствуется

...