简体   繁体   English

行列表的 SQL 存储过程数据类型

[英]SQL Stored Procedure data type for list of rows

What data type can I use to store all rows found by SELECT query?我可以使用什么数据类型来存储 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
/

One way is to use a REFCURSOR variable of OUT type.一种方法是使用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
/

Also, use VARCHAR2 instead of VARCHAR .此外,使用VARCHAR2而不是VARCHAR It should be without the size, as procedure arguments with size won't compile.它应该没有大小,因为具有大小的过程参数不会编译。

The procedure can be called to receive the cursor into a local ref cursor variable.可以调用该过程以将游标接收到本地ref cursor变量中。

DECLARE
res_cur SYS_REFCURSOR;
BEGIN
    handleFailedCalls('Xnumber1', res_cur );
END;
/

Use BULK COLLECT , example:使用BULK COLLECT ,例如:

 DECLARE TYPE emp_typ IS TABLE OF employees%ROWTYPE INDEX BY PLS_INTEGER; all_employees emp_typ; BEGIN SELECT * BULK COLLECT INTO all_employees FROM employees;

A SELECT ... BULK COLLECT INTO statement can return multiple rows. SELECT ... BULK COLLECT INTO 语句可以返回多行。 You must set up collection variables to hold the results.您必须设置集合变量来保存结果。 You can declare associative arrays or nested tables that grow as needed to hold the entire result set.您可以声明根据需要增长以保存整个结果集的关联数组或嵌套表。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 PL SQL 存储过程复制同一张表中的行与修改的数据 - PL SQL stored procedure to copy rows in the same table with modified data SQL存储过程结合了两行数据 - SQL Stored procedure combining data from two rows sql 存储过程 - 使用 Idatareader 检索多行数据时出现问题 - sql stored procedure - Having problems retreiving multiple rows of data with Idatareader SQL Server存储过程-将数据类型varchar转换为datetime时出错 - SQL Server stored procedure - error converting data type varchar to datetime 在 SQL 存储过程中使用用户定义的表 - 无效数据类型 - using user defined tables in SQL Stored Procedure - invalid data type 将数据类型varchar转换为浮动SQL Server存储过程时出错 - Error converting data type varchar to float SQL Server stored procedure 从存储过程数据类型SQL确定返回的列 - Determine returned columns from stored procedure data type SQL SQL存储过程将数据类型varchar转换为bigint时出错 - SQL Stored Procedure Error converting data type varchar to bigint 如何在SQL Server 2008的存储过程中操作ntext类型数据 - How to manipulate ntext type data in stored procedure of SQL Server 2008 在SQL Server中将varchar数据类型转换为带存储过程错误的小数 - Converting varchar data type to decimals in SQL Server with stored procedure errors
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM