簡體   English   中英

行列表的 SQL 存儲過程數據類型

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

我可以使用什么數據類型來存儲 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
/

一種方法是使用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;
/

使用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;

SELECT ... BULK COLLECT INTO 語句可以返回多行。 您必須設置集合變量來保存結果。 您可以聲明根據需要增長以保存整個結果集的關聯數組或嵌套表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM