Как создать пользовательскую функцию в версии DB2 Z/OS 8.1?

Это мой код: я пытаюсь создать функцию UDF для z/os из Data Studio. Мне не нужно использовать внешнюю функцию или другие. Мне нужно выполнить эту функцию SQL.

 CREATE FUNCTION FUNCTION5()
 RETURNS FLOAT
 language sql
 DETERMINISTIC
 READS SQL DATA 
 NO EXTERNAL ACTION
 BEGIN 
 DECLARE RANVAL FLOAT ;
 SELECT RAND() INTO RANVAL FROM SYSIBM.SYSDUMMY1;   
 RETURN RANVAL ;
 END

Но при выполнении приведенного выше кода я получаю эту ошибку. Можете ли вы, пожалуйста, помогите мне понять это, пожалуйста.

Я хочу разработать около 20 скалярных UDF на DB2 Z/OS. Пожалуйста, помогите мне, пожалуйста.

 Deploy [MeDB]MeDB.FUNCTION5

Running
MeDB.FUNCTION5 - Deploy started.
Create user-defined function returns SQLCODE: -199, SQLSTATE: 42601.
MeDB.FUNCTION5: 0: DB2 SQL Error: SQLCODE=-199, SQLSTATE=42601,      SQLERRMC=DECLARE;ON AFTER <INTEGER>, DRIVER=4.18.60
DB2 SQL Error: SQLCODE=-199, SQLSTATE=42601, SQLERRMC=DECLARE;ON AFTER <INTEGER>, DRIVER=4.18.60
MeDB.FUNCTION5 - Deploy failed.
MeDB.FUNCTION5 - Roll back completed successfully.

person Vivek Harry    schedule 11.01.2017    source источник
comment
Меня устраивает. Я запустил ваш код, и он создал функцию FUNCTION5.   -  person uSeruSher    schedule 11.01.2017
comment
@vijayksingh.vj Хорошо, спасибо за ответ. Не могли бы вы сказать мне, в какой версии вы выполняете приведенный выше код, пожалуйста?   -  person Vivek Harry    schedule 11.01.2017
comment
@vijayksingh.vj Но я чертовски уверен, что это V8.1. Как вы думаете, будет ли тот же код работать на V8.1?   -  person Vivek Harry    schedule 12.01.2017


Ответы (1)


Я полагаю, что функция, которую вы пытаетесь создать, не поддерживается в DB2 7. Использование ключевых слов BEGIN, END и DECLARE указывает на то, что вы пытаетесь использовать SQLPL, который не поддерживается до DB2 10 в качестве скомпилированных скалярных функций. У меня нет документации для 7, но я думаю, что вы можете создавать только встроенные скалярные функции, которые ограничены одним выражением в операторе RETURN, как описано в справочник по DB2 10 для CREATE FUNCTION (встроенный скаляр):

Оператор CREATE FUNCTION (встроенный скаляр SQL) определяет скалярную функцию SQL на текущем сервере и задает оператор RETURN процедурного языка SQL для тела функции. Функция возвращает одно значение при каждом вызове.

SQL-подпрограмма-тело

Задает один оператор RETURN.

person David    schedule 11.01.2017
comment
Спасибо @david, есть ли у меня какие-либо предварительные настройки в Data Client V3.1 для развертывания SQL UDF и хранимой процедуры SQL DB2 Z/OS V8.1? - person Vivek Harry; 14.01.2017
comment
@VivekHarry Извините, у меня нет в этом опыта. - person David; 16.01.2017