4.5.3调用返回单结果集的存储过程

 

存储过程更多的情况下会被用来返回结果集。如下面的存储过程RQ_TEST_CUR会返回单个结果集:

-  CREATE OR REPLACE PROCEDURE RQ_TEST_CUR

-  (

-  V_TEMP OUT TYPE.RQ_REF_CURSOR,

-  PID IN VARCHAR

-  )

-  AS

-  BEGIN

-  OPEN V_TEMP FOR SELECT * FROM TEST WHERE ID =PID;

-  END RQ_TEST_CUR;

这个存储过程中输入一个参数,并用游标返回了一个结果集。在集算器中调用这个存储过程的代码如下:

 

A

1

=connect("ora")

2

=A1.proc("{call RQ_TEST_CUR(?,?)}",:101:"o":table1,1:0:"i":)

3

=table1

4

>A1.close()

A2单元格使用proc函数调用存储过程:=A1.proc("{call RQ_TEST_CUR(?,?)}", :101:"o":table1, 1:0:"i":)。下面依次解释一下proc函数中设定的参数:

SQL字符串"{call RQ_TEST_CUR(?,?)}"中包含调用存储过程的名字,问号表示SQL的参数。

再来看存储过程中的参数:

:101:"o":table1定义了一个输出参数,第一个冒号前留空表示没有输入值,101代表其数据类型是游标,"o"代表这个参数是输出参数。table1是定义了一个变量,可以用这个变量引用返回结果。

1:0:"i":定义了一个输入参数,1是输入参数的值,0表示输入参数的类型是由集算器自动识别,"i"代表这个参数是输入参数,最后一个冒号后留空表示不需要将结果输出。

A3单元格通过使用A2中的输出变量来引用存储过程的执行结果,计算结果与A2是相同的,都是从TEST表中查询的结果,数据类型是序表。