質問

誰かが手順の結果を表示する方法を説明できますか?すべてが正常に動作し、コードが有効で実行され、エラーなしでコンパイルされます。次に、結果をクエリなどとして見るにはどうすればよいですか。

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.
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top