是否可以在pl / sql存储过程中使用绑定变量(在pl / sql块外部声明和初始化)
我只是想打印如下所示定义的绑定变量:
绑定变量声明和初始化
var jdata varchar2(4000);
exec :jdata := ''{"PONumber":12,"Reference":"StackOver"}'';
pl / sql程序
create or replace PROCEDURE generic_procedure( v_typename IN VARCHAR2,v_path IN VARCHAR2 DEFAULT '$') IS
BEGIN
dbms_output.put_line(:jdata);
END generic_procedure;
/
错误
编译失败: SQL>显示错误 PROCEDURE GENERIC_PROCEDURE的错误:
错误:错误的绑定变量'JDATA'
这里,我试图在generic_procedure(存储的pl / sql过程)中调用jdata。但它说JDATA为
错误的绑定变量
答案 0 :(得分:0)
AFAIK,不认为这是可能的,因为需要在包或程序的范围内定义PL / SQL变量。
您可以创建一个包来保存此变量,然后在过程中设置并使用它的值。
SelectMany
希望它有所帮助 Vishad
答案 1 :(得分:0)
您可以使用替换变量:
define jdata='{"PONumber":12,"Reference":"StackOver"}';
create or replace PROCEDURE generic_procedure( v_typename IN VARCHAR2,
v_path IN VARCHAR2 DEFAULT '$') IS
BEGIN
dbms_output.put_line('&jdata');
END generic_procedure;
/
但您也可以将其作为参数传递给过程。这似乎对我来说有点清洁。由于该过程不依赖于在其之外声明或已经声明的某个变量。它只适用于参数。
create or replace PROCEDURE generic_procedure( v_data IN varchar2,
v_typename IN VARCHAR2,
v_path IN VARCHAR2 DEFAULT '$') IS
BEGIN
dbms_output.put_line(v_data);
END generic_procedure;
/
exec generic_procedure('&jdata','typename');
Here's更多关于sqlplus中的变量