我是 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;
我是 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;
或者,您可以将结果记录到数据库中的表中。这两种方法(控制台与数据库)可以互补,并且在不同的场景中都有用。
实现这一目标的步骤:
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 |
启动 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;
/
添加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;