Здесь у меня есть хранимая процедура в Oracle:
CREATE OR REPLACE PROCEDURE StP_COMPS
IS
CV_1 SYS_REFCURSOR;
BEGIN
OPEN CV_1 FOR SELECT * FROM COMPUTERS;
END;
Когда я выполняю процедуру наподобие EXEC SP_COMPS, я не получаю ошибки, SQL-разработчик просто показывает «анонимный блок завершен».Затем я изменяю процедуру на
CREATE OR REPLACE PROCEDURE SP_COMPS
(cv_1 OUT SYS_REFCURSOR)
IS
BEGIN
OPEN CV_1 FOR SELECT * FROM COMPUTERS;
END;
и при выполнении я получаю сообщение об ошибке, указывающее, что число типов аргументов неверно.Мне очень любопытно, что я мог бы отправить в качестве аргумента процедуры, если это просто выходной параметр.Я хочу получить набор результатов запроса внутри процедуры.Что я здесь не так делаю?
PS Когда я пытаюсь запустить процедуру, щелкнув правой кнопкой мыши по этой процедуре и выбрав Выполнить, я получаю:
DECLARE
CV_2 sys_refcursor;
BEGIN
SP_COMPS(
CV_2 => CV_2
);
:CV_2 := CV_2; -- <--Can't understand this part
END;