Какой блок использовать для выполнения хранимой функции/процедуры в Oracle?

0 голосов
Екатерина Усачева в категории Как сделать...

Поскажите, какой блок использовать для выполнения функции в Оракл? Подключение к БД настроено. Беру блок Импорт из БД, вставляю код:
declare
l_message number;
begin
l_message := rep_table ('l_param1','l_param2','l_param3');
end;
И получаю ошибку: SQL statement doesn't return rows

Ответ: 1 шт.

+1 голос
Александр Музалев

Импорт предполагает, что возвращается какой-то набор данных. Вот так запрос в Loginom 7 должен отработать без ошибок

declare

  l_message number;

  l_cursor SYS_REFCURSOR;

begin

  l_message := rep_table ('l_param1','l_param2','l_param3');

  OPEN l_cursor FOR SELECT 1 FROM DUAL;

  DBMS_SQL.RETURN_RESULT(l_cursor);

end;

Т.к. ошибка "SQL statement doesn't return rows"  возникает уже после того, как отработала процедура, есть другой вариант: поставить в мастере галочку "Игнорировать ошибки". В таком случае сам узел выполнится без ошибки, а статус выполнения можно будет узнать из Выходного порта "Статус выполнения".

Екатерина Усачева
Благодарю! Предложенный запрос отработал без ошибок.
...