有人可以解释如何查看过程的结果,一切正常,代码有效,执行和编译没有错误。现在,我如何才能将结果视为Query或其他任何内容。
前程序是关于工资的总和。
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;
答案 0 :(得分:2)
你是在SQL * Plus中运行吗?你有“设置serveroutput;”?
答案 1 :(得分: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.
答案 2 :(得分: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;
(没有承诺上述语法完美 - 我现在远离数据库。但它应该足够接近让你朝着正确的方向前进。)
哦 - 如果适合您的环境,您可以在包内使用用户定义的游标类型。