0

私は Oracle を初めて使用します。Oracle ヒキガエルに次のストアド プロシージャがあり、正常にコンパイルされます。

この手順を実行して結果を確認したいと思います。

CREATE OR REPLACE procedure SCOTT.sp_testing (v_date1 in date ,vno out varchar2)
As
BEGIN
select voucher_no  into vno from v_jv_ms  where v_date = v_date1;
END;
4

3 に答える 3

1

SQL * Plus(またはTOADのスクリプトウィンドウ)を起動し、次の行を入力または貼り付けます。

set serverout on size 1000000
declare
  v_date1 date := sysdate;
  vno varchar2(100);
begin
  scott.Sp_testing(v_date1, vno);
  dbms_output.put_line(vno);
end;
/
于 2012-06-21T10:21:52.633 に答える
1

または、結果をデータベース内のテーブルに記録することもできます。2 つのアプローチ (コンソールとデータベース) は補完的であり、どちらもさまざまなシナリオで役立ちます。

これを達成するための手順:

  1. ログ レコードを受け取るログ テーブルを作成します。
  2. ログ出力を書き込む手順を作成します。
  3. 必要なパラメータを指定してロギング プロシージャを呼び出します。
  4. ログ テーブルから選択して結果を表示します。

1. ログ出力を受け取るテーブルを作成します。

CREATE TABLE tlog (
    seq         NUMBER(8),
    ltime       DATE,
    llevel      VARCHAR2(5),
    module      VARCHAR2(64),
    message     VARCHAR2(512)
);

CREATE SEQUENCE slog;

2. ログ出力の書き込み手順:

CREATE OR REPLACE PROCEDURE plog_debug(module IN VARCHAR2, message IN VARCHAR2) IS
    PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
    INSERT INTO tlog
        (seq, ltime, llevel, module, message)
    VALUES
        (slog.NEXTVAL, SYSDATE, 'DEBUG', module, message);
    COMMIT;
EXCEPTION
    WHEN OTHERS THEN
        ROLLBACK;
END plog_debug;

3. 必要なパラメータを指定してロギング プロシージャを呼び出します。

plog_debug('SCOTT.sp_testing', 'Voucher no is:' || vno);

4. ログ テーブルから選択して結果を表示します。

SELECT * FROM TLOG;
| SEQ | LTIME               | LLEVEL | MODULE           | MESSAGE           | 
| 1   | 21/06/2012 09:49:00 | DEBUG  | SCOTT.sp_testing | Voucher no is:999 |
于 2012-06-21T08:53:42.947 に答える
0

プロシージャへの呼び出しを追加するdbms_output.put_lineと、DBMS 出力タブに出力が表示されます。

CREATE OR replace PROCEDURE scott.Sp_testing (v_date1 IN DATE,
                                              vno     OUT VARCHAR2)
AS
BEGIN
    SELECT voucher_no
    INTO   vno
    FROM   v_jv_ms
    WHERE  v_date = v_date1;

    dbms_output.Put_line('Voucher no is:'
                         || vno);
END; 
于 2012-06-21T07:21:29.527 に答える