![](/img/trans.png)
[英]PL SQL stored procedure to copy rows in the same table with modified data
[英]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.