Как просмотреть / проверять результат процедуры?

StackOverflow https://stackoverflow.com/questions/3774962

  •  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.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top