运行Oracle简单过程

时间:2012-06-21 04:42:51

标签: oracle stored-procedures plsql toad

我是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;

3 个答案:

答案 0 :(得分:1)

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

实现这一目标的步骤:

  1. 创建一个记录表以接收日志记录。
  2. 创建一个写日志输出的过程。
  3. 使用所需参数调用日志记录过程。
  4. 从记录表中选择以查看结果。
  5. <强> 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 |
    

答案 1 :(得分: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;
/

答案 2 :(得分:0)

为您的程序添加dbms_output.put_line电话&amp;您可以在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;