Использование DECODE в вызове процедуры PL / SQL - PullRequest
0 голосов
/ 08 сентября 2018

У меня есть хранимая процедура PL / SQL (скажем, X), которая вставляет записи в таблицу. Я вызываю эту процедуру из другой процедуры (скажем, Y). У меня есть некоторые параметры в процедуре Y, такие как para1, para2, para3, которые могут иметь два значения: ноль или один, для нуля и одного значения. У меня есть один идентификатор, сохраненный в TBL_SETUP, и когда я вызываю процедуру XI, я хочу проверить, что если para1 NULL, затем вернуть NULL, если он не равен NULL, то проверить, равен ли он единице, затем вернуть YES_ID, а если нет, вернуть NO_ID.

Я пробовал что-то подобное. Я написал инструкцию SELECT для получения YES_ID, NO_ID перед вызовом процедуры, и она работает нормально, но когда я пишу вызов процедуры, как показано ниже, это выдает мне ошибку "PLS-00204: функция или псевдостолбец может использоваться внутри SQL только заявление ". Как использовать DECODE в вызове процедуры?

PROC_X(DECODE(para1,NULL,NULL,DECODE(para1,'1',YES_ID,NO_ID)),para2,NULL,NULL,DECODE(para2,'1',YES_ID,NO_ID)),para3,NULL,NULL,DECODE(para3,'1',YES_ID,NO_ID)),)

1 Ответ

0 голосов
/ 08 сентября 2018

Вы можете использовать SELECT INTO:

DECLARE 
   DECODE_RESULT VARCHAR2(100); -- or any suitable data type
BEGIN
   SELECT DECODE(...) INTO DECODE_RESULT FROM dual;

   PROC_X(DECODE_RESULT);

END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...