1.no parm
exec procedure_name; -
2.in,out parms:
SOL>var i_out number; --out parm
sql>declare
i_in integer := 1; -- in parm
begin
exec procedure_name(i_in,:i_out);
end;
/sql>print i_out
exec procedure_name; -
2.in,out parms:
SOL>var i_out number; --out parm
sql>declare
i_in integer := 1; -- in parm
begin
exec procedure_name(i_in,:i_out);
end;
/sql>print i_out
希望能对你有帮助。
我写的是过程,应该怎么调用呢?
谢谢!
的方法,还有
sql>variable mypara1 varchar2(20) :='in para';
sql>variable mypara2 number
sql>exec myprocedure(mypara1,:mypara2);
谢谢大家.
但是因为我没有其他的软件工具,
所以在SQL/PLUS里面执行,
但是每次我写了类似jakarta(长风大侠)的方法,就是用了BEGIN,END
就不对了!
为什么呢?
var i_out2 VARCHAR2(200);declare
i_in integer := 1;
begin
exec :i_out1 := function_name(i_in,:i_out2);
end;
/我做的是一个函数.
var i_out2 VARCHAR2(200);declare
i_in integer := 1;
begin
i_out1 := function_name(i_in);
end;--function_name return i_out2;
在别的过程或应用程序中调用函数,得这么写
select function_name(i_in) into i_out1 from dual
上面的句子出错的!
错误信息,说i_out1没有定义.
直接这么写
select function_name(30) from dual;
把进口参数写进出,用select 就可以执行函数。
var i_out1 number;
var i_out2 VARCHAR2(200);declare
i_in integer := 1;
begin
:i_out1 := function_name(i_in,:i_out2);
end;
/
PRINT i_out2;
先等一下,不过还是先谢谢 penitent(只取一瓢) 、 jakarta(长风大侠)
...
begin
...
return param3;
end;这时候,你在外面可以使用var i_out2 VARCHAR2(20);
var i_out3 VARCHAR2(20);declare
i_in1 VARCHAR2(10) := 'AAA';
begin
:i_out3 := fun_name(i_in,:i_out2);
end;
/或者
SET SERVEROUTPUT ON
DECLARE
P1 VARCHAR2(10) := 'AAA';
P2 VARCHAR2(10);
P3 VARCHAR2(10);
BEGIN
P3 := fun_name(p1,p2);
dbms_output.put_line('p1:'||p1);
dbms_output.put_line('p2:'||p2);
dbms_output.put_line('p3:'||p3);
END;
/