题
有人可以解释如何查看过程的结果,一切正常,并且代码是有效的,执行和编译的,没有错误。现在,我如何将结果视为查询或其他任何内容。
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.
不隶属于 StackOverflow