Страницы

Поиск по вопросам

воскресенье, 7 июля 2019 г.

Как динамически задать курсор из строки?

Хочу передавать в процедуру строку с запросом для курсора. Пробую сделать это так:
DECLARE TYPE t_client_cursor IS REF CURSOR RETURN CLIENTS%ROWTYPE; v_client_cursor t_client_cursor; v_client CLIENTS%ROWTYPE; v_query_text VARCHAR2(100) := 'SELECT * FROM CLIENTS C WHERE ROWNUM < 4 ORDER BY C.CLNT_ID'; BEGIN OPEN v_client_cursor FOR exec (v_query_text); .... END; /
Ругается
ORA-06550: Трока 8, столбец 6; PLS-00455: курсор 'V_CLIENT_CURSOR' нельзя использовать в команде OPEN dynamic SQL ORA-06550: Строка 8, столбец 1: PL/SQL: Statement ignored
Но как-то ведь должно быть возможным определить курсор из строки?


Ответ

Я так понимаю, вам нужно что-то вроде этого:
declare v_client_cursor sys_refcursor; v_query_text VARCHAR2(100) := 'SELECT * FROM CLIENTS C WHERE ROWNUM < 4 ORDER BY C.CLNT_ID'; begin open v_client_cursor for v_query_text;
...
close v_client_cursor; end; /

Комментариев нет:

Отправить комментарий