0

我是 Oracle 的新手,我在 Oracle toad 中有一个以下存储过程,它编译成功。

我想运行这个程序并查看结果。

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

或者,您可以将结果记录到数据库中的表中。这两种方法(控制台与数据库)可以互补,并且在不同的场景中都有用。

实现这一目标的步骤:

  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 回答
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 回答
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 回答