Вызов db2 udf, который возвращает целое число - PullRequest
0 голосов
/ 11 июля 2020

Я написал пользовательскую функцию в db2, она принимает несколько аргументов и возвращает целое число. Может ли кто-нибудь сказать мне, как вызвать пользовательскую функцию db2, которая возвращает целое число.

CREATE FUNCTION TEST_FUNCTION(V_DATE DATE,V_GROUP VARCHAR(20),V_FREQ 
VARCHAR(20),V_RULE VARCHAR(20))
RETURNS INTEGER
LANGUAGE SQL
MODIFIES SQL DATA
BEGIN
DECLARE V_ID INTEGER;
SET V_ID = (10+ COALESENCE((SELECT MAX(ID) FROM CAL_LOG WITH UR),0));
BEGIN ATOMIC
INSERT INTO CAL_RESULT(ID,P_DATE,GROUP,FREQ,RULE)
VALUES(V_ID,V-DATE,V_GROUP,V_FREQ,V_RULE);
END;
RETURN V_ID;
END;

Нет проблем с построением функции.

Могу ли я вызвать эту функцию с помощью SELECT.

1 Ответ

0 голосов
/ 12 июля 2020

Если вы используете предложение MODIFIES SQL DATA, то такую ​​функцию можно использовать только как единственный элемент с правой стороны оператора присваивания, который находится внутри составного SQL (скомпилированного) оператора. См. «Примечание 4» к CREATE FUNCTION (SQL скаляр, таблица или строка) . Это означает, что вы можете использовать его только так:

--#SET TERMINATOR @
BEGIN
  DECLARE V_RC INT;
  SET V_RC = TEST_FUNCTION(...);
END@
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...