如何在oracle存储过程中printf(用于调试目的)?

时间:2012-03-01 16:00:35

标签: oracle stored-procedures

我正在尝试调试存储过程(Oracle)。我想打印一些变量。

我不知道要打印的命令是什么(或在哪里找到它)。谁能告诉我它是什么?

由于

修改

这是我的触发器:

create or replace
procedure bns_saa_confs_update_state (
  theID in varchar2
)
AS
begin
  UPDATE BNS_SAA_CONFIRMATIONS SET SentToWssStatus='T' WHERE ID=theID;
  commit;
end;

我想打印ID

2 个答案:

答案 0 :(得分:21)

使用dbms_output.put_line()功能:

declare
    my_var varchar2(20);
begin
    my_var := 'Hello World';
    dbms_output.put_line(my_var);
end;
/

如果从SQLPlus运行,请确保您具有set serveroutput on,或者如果从IDE运行,则设置输出。一些开发人员将创建一个包装器函数来简化调试。

答案 1 :(得分:4)

您可能需要DBMS_OUTPUT包,即

DECLARE
  a INTEGER := 0;
BEGIN
  dbms_output.put_line( 'Starting value: ' || a );
  a := a + 1;
  dbms_output.put_line( 'Ending value: ' || a );
END;

请注意,在显示数据之前,通常需要在客户端应用程序中启用DBMS_OUTPUT。在SQL * Plus中,您需要

set serveroutput on;

在执行存储过程之前,以便在执行后显示数据。其他GUI工具有不同的方法来启用DBMS_OUTPUT