行列表的SQL存储过程数据类型
我可以使用什么数据类型来存储SELECT查询找到的所有行行列表的SQL存储过程数据类型,sql,oracle,stored-procedures,oracle11g,multiple-return-values,Sql,Oracle,Stored Procedures,Oracle11g,Multiple Return Values,我可以使用什么数据类型来存储SELECT查询找到的所有行 CREATE OR REPLACE PROCEDURE handleFailedCalls(xNumber in varchar(10)) AS result {DATA TYPE I WANT}; BEGIN select * into result from CALLS c1 where c1.status = 'fail' END / 例如,使用: 精选的。。。BULK COLLECT INTO语句可以返回多行。
CREATE OR REPLACE PROCEDURE handleFailedCalls(xNumber in varchar(10)) AS
result {DATA TYPE I WANT};
BEGIN
select * into result
from CALLS c1
where c1.status = 'fail'
END
/
例如,使用:
精选的。。。BULK COLLECT INTO语句可以返回多行。必须设置集合变量以保存结果。您可以声明关联数组或嵌套表,这些数组或嵌套表根据需要增长以容纳整个结果集
一种方法是使用
OUT
类型的REFCURSOR
变量
CREATE OR REPLACE PROCEDURE handleFailedCalls(xNumber in varchar2,
p_result OUT SYS_REFCURSOR
) AS
BEGIN
OPEN p_result FOR select * from CALLS c1
where c1.status = 'fail'
END
/
另外,使用VARCHAR2
代替VARCHAR
。它应该没有大小,因为带有大小的过程参数将无法编译
可以调用该过程将光标接收到本地ref cursor
变量中
DECLARE
res_cur SYS_REFCURSOR;
BEGIN
handleFailedCalls('Xnumber1', res_cur );
END;
/
如果我通过从联合表(如
employees LEFT JOIN users
)中选择数据,以这种方式进行批量收集会怎么样?所有_员工中是否都会有两个表的所有列?@ShaahinShemshian see
DECLARE
res_cur SYS_REFCURSOR;
BEGIN
handleFailedCalls('Xnumber1', res_cur );
END;
/