2012-06-21 109 views
0

我是Oracle新手,我在Oracle toad中有一个以下存储过程,并且它成功编译。运行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; 

回答

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; 
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 | 
+0

我不明白为什么我必须做大量的工作,只是运行我的PROC,我只是想通过给输入参数,就像在MSSQL,我们只是写来执行我的程序“前ecute sp_testing(input para ..)“ –

+0

请注意:此建议将允许您从任何存储过程登录到中央位置。如果您按照上述步骤操作,并将第3点的行添加到存储过程中,您将在tlog中看到结果。你仍然需要像平常一样运行它。 – PaddyC

+0

我能正确理解你的问题吗?我突然想知道你是否也问“如何运行存储过程?” – PaddyC

1

火起来的SQL * Plus(或蟾蜍脚本窗口),然后键入或粘贴以下行:

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; 
/
+0

无法正常工作..编译成功,但我的DBMS输出窗口被禁用 –

+0

在TOAD中,右键单击编辑器,选择桌面面板,启用DBMS输出。 – PaddyC