1

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

前程序是关于工资的总和。

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; 
4

3 回答 3

2

您是否在 SQL*Plus 中运行它?你有没有“设置服务器输出;”?

于 2010-09-23T02:45:46.780 回答
1

我为此推荐一个功能

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.
于 2010-09-23T09:15:56.387 回答
0

要在过程中输出 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;

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

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

(不能保证以上在语法上是完美的——我现在远离数据库。但它应该足够近,可以让你朝着正确的方向前进。)

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

于 2010-09-23T02:42:29.180 回答