对于有返回值的存储过程,就只能用proc函数调用了。下面的存储过程testb要返回一个参数值,所以不能使用execute函数,需要使用proc函数。
- create or replace procedure testb
- (para1 in varchar2,para2 out varchar2)
- as
- begin
- select name into para2 from emp where id= para1;
- end testb;
集算器调用这个存储过程的代码是:
|
A |
1 |
=connect("ora") |
2 |
=A1.proc("{call testb(?,?)}",1:0:"i":,:11:"o":name) |
3 |
=name |
4 |
>A1.close() |
A1中连接数据库,A4中关闭连接。
A2中使用proc函数调用存储过程testb。这里使用了两个参数:1:0:"i":表示值为1,类型为自动判断的输入参数;:11:"o":name中的11代表字符串类型(详见附录:参数类型定义),"o"代表输出类型,name是为这个输出参数定义了一个集算器变量,接收返回值。当
A3中取得变量name的值,即为存储过程的输出结果。变量值的类型由存储过程决定,在本例中name用来返回指定编号员工的名字,类型是字符串。
在存储过程中,共有3种输入/输出模式:输入参数,输出参数,输入输出参数,分别用"i","o"和"io"表示。其中,输入输出参数,表示存储过程中的参数既用来输入数据,同时也被存储过程赋值。