Хочу передавать в процедуру строку с запросом для курсора. Пробую сделать это так:
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;
/
Комментариев нет:
Отправить комментарий