手順の結果を表示/検証する方法は?
-
04-10-2019 - |
質問
誰かが手順の結果を表示する方法を説明できますか?すべてが正常に動作し、コードが有効で実行され、エラーなしでコンパイルされます。次に、結果をクエリなどとして見るにはどうすればよいですか。
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;
解決
手順で選択されたステートメントの結果を出力するには、カーソルを使用する必要があります。
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;
(上記が構文的に完璧であるという約束はありません - 私は今DBから離れています。しかし、それはあなたを正しい方向に導くのに十分近いはずです。)
ああ - そして、環境に適している場合は、パッケージ内にユーザー定義のカーソルタイプを使用できます。
他のヒント
これを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.
所属していません StackOverflow