有人可以解释如何查看过程的结果,一切正常,并且代码是有效的,执行和编译的,没有错误。现在,我如何将结果视为查询或其他任何内容。

EX程序大约是薪水的总和。

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; 
有帮助吗?

解决方案

要在过程中输出Select语句的结果,您需要使用光标。

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;

然后使用它,声明光标,执行POC并输出结果。

variable records refcursor;
exec myproc(1, :records);
print :records;

(没有任何承诺上面的句法是完美的 - 我现在远离数据库。但是它应该足够近,可以使您朝正确的方向。)

哦 - 如果适合您的环境,则可以在软件包内部使用用户定义的光标类型。

其他提示

您在SQL*Plus中运行吗?您是否“将ServerOutput设置为;”?

我推荐这个功能

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