Как просмотреть / проверять результат процедуры?
-
04-10-2019 - |
Вопрос
Может кто-нибудь объяснить, как увидеть результаты процедуры, все работает нормально, и код действителен, выполняется и скомпилирован без ошибок. Теперь, как я могу увидеть результаты в качестве запроса или что-нибудь.
Процедура бывшая сумма зарплаты.
CREATE OR REPLACE PROCEDURE HR.TOTAL_SALARY AS
total_salary NUMBER(12,2);
BEGIN
SET TRANSACTION READ ONLY;
SELECT SUM (salary)
INTO total_salary
FROM employees;
DBMS_OUTPUT.PUT_LINE('Total salary 1: ' || total_salary);
COMMIT;
END;
Решение
Для вывода результатов оператора выбора в процедуре необходимо использовать курсор.
create procedure myproc
(in_variable IN number, out_records OUT sys_refcursor)
as
begin
open out_records for
select * from mytable
where column = in_variable;
end;
Затем, чтобы использовать его, объявить курсор, выполнить proc и выводить результаты.
variable records refcursor;
exec myproc(1, :records);
print :records;
(Нет обещаний, что вышеупомянутое синтаксически совершенное - я сейчас вдаю от БД. Но это должно быть достаточно близко, чтобы получить вас в правильном направлении.)
OH - и вы можете использовать пользовательский тип курсора внутри пакета, если это подходит для вашей среды.
Другие советы
Вы работаете в SQL * Plus? У вас «настроить ServerOutput On;»?
Я рекомендую для этой функции
CREATE OR REPLACE FUNCTION HR.TOTAL_SALARY return number AS
total_salary NUMBER(12,2);
BEGIN
SELECT SUM (salary)
INTO total_salary
FROM employees;
return total_salary;
END;
Использование для этого похоже:
select hr.TOTAL_SALARY() as total_sal from dual.