Если вы хотите передать SQL-запрос в качестве параметра, попробуйте следующее
CREATE OR REPLACE PROCEDURE sqldynamic (sqlquery IN SYS_REFCURSOR)
IS
BEGIN
LOOP
FETCH sqlquery INTO <your variables>;
EXIT WHEN sqlquery %NOTFOUND;
END LOOP;
END
и выполните описанную выше процедуру как
DECLARE
my_cursor SYS_REFCURSOR;
BEGIN
OPEN my_cursor FOR
SELECT <columns>
FROM <your_table>;
sqldynamic (my_cursor);
CLOSE my_cursor;
END;
Замените все, что сочтено необходимым, внутри <>
Например
CREATE OR REPLACE PROCEDURE sqldynamic (sqlquery IN SYS_REFCURSOR)
IS
v_emp_number employees.emp_number%TYPE;
v_emp_name employees.employee_name%TYPE;
BEGIN
LOOP
FETCH sqlquery INTO v_emp_number, v_emp_name;
DBMS_OUTPUT.put_line (
'v_emp_number ' || v_emp_number || ' v_emp_name ' || v_emp_name);
EXIT WHEN sqlquery%NOTFOUND;
END LOOP;
END;
И выполнить описанную выше процедуру в виде блока PL / SQL
DECLARE
my_cursor SYS_REFCURSOR;
BEGIN
OPEN my_cursor FOR SELECT emp_number, employee_name FROM employees WHERE emp_number=108;
sqldynamic (my_cursor);
CLOSE my_cursor;
END;