oracle存储过程 - 打印varchar2输出变量

时间:2011-09-08 17:50:08

标签: oracle stored-procedures plsql

我按如下方式执行存储过程:

var myOutput varchar2

exec myproc(:myOutput)

print myOutput

然而,这不起作用。

我收到一条错误消息:

Bind Variable "myOutput" is NOT DECLARED

当我在其他过程中使用递归而不是varchar2时,这是有效的。我做错了什么?

谢谢!

2 个答案:

答案 0 :(得分:2)

所以你有这样的程序:

CREATE OR REPLACE PROCEDURE bark ( woof IN OUT VARCHAR2 )
IS
BEGIN
  woof := 'Woof!';
END bark;

然后你跑:

SQL> var myOutput VARCHAR2(10) 
SQL> exec bark(:myOutput);

PL/SQL procedure successfully completed.

SQL> print myOutput

MYOUTPUT
--------------------------------
Woof!

这与你想要做的相似吗?

答案 1 :(得分:2)

正是你正在运行的是什么?如果是这样,我认为问题是你没有指定myOutput变量的大小。您需要这样做(根据您的需要调整长度):

SQL> var myOutput varchar2(40)

它在the documentation