2011-09-08 1062 views
0

我执行一个存储过程如下:Oracle存储过程 - 打印VARCHAR2输出变量

var myOutput varchar2 

exec myproc(:myOutput) 

print myOutput 

但是,这是行不通的。

我得到一个错误消息说:

Bind Variable "myOutput" is NOT DECLARED 

当我使用一个refcurser而不是其他特效一个VARCHAR2,这个工程。我究竟做错了什么?

谢谢!

回答

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! 

这是类同你正在尝试做什么?

+0

给我两个错误。首先一个关于myoutput的错误是我在执行proc时声明的,然后同样的错误在上面。 – kralco626

+0

抱歉,我在编写答案时做了一些假设。我将编辑原始帖子。 – roartechs

2

难道是究竟是你在跑什么?如果是这样,我认为问题是你没有指定你的myOutput变量的大小。你需要这样做(调节距离根据您的具体需求):

SQL> var myOutput varchar2(40) 

它在the documentation