Я очень плохо знаком с хранимой процедурой oracle, поэтому, пожалуйста, прости меня, если я задаю очень простой или базовый c вопрос.
Я хочу просмотреть результаты внутреннего соединения набор, который был создан в процедуре с использованием курсора.
Я создал одну процедуру, которая имеет простой SQL запрос выбора, соединяющий таблицу буксировки и поля выбора из обеих таблиц.
CREATE OR REPLACE PROCEDURE demoprocedure(crsr out SYS_REFCURSOR)
AS
BEGIN
OPEN crsr FOR
SELECT
TABLE1.field1, TABLE2.field2, TABLE1.fields11, TABLE2.field22
FROM
TABLE1 INNER JOIN
TABLE2
ON
TABLE1.field12 = TABLE2.field12
END demoprocedure;
Я хочу просмотреть этот набор результатов с помощью курсора, вот что я пробовал
DECLARE
crsr SYS_REFCURSOR;
temp SYS_REFCURSOR;
BEGIN
demoprocedure(crsr);
LOOP
FETCH crsr INTO temp;
EXIT WHEN crsr%NOTFOUND;
Dbms_Output.Put_Line('Fields1 is : ' || temp.field1);
END LOOP;
CLOSE crsr;
END;
Но это не работает, я попытался создать пользовательский объект, но также выдает ошибку.
Ожидаемый результат:
Fields1 is : 1
Fields1 is : 2
Fields1 is : 3