[英]Oracle Stored Procedure: Returning a Multiple Rows
在我的存儲過程中,它需要獲取輸入並將多行返回給前端應用程序。
但是,存儲過程會產生錯誤:
怎么解決?
對象類型
CREATE TYPE org_rspnsble_prsns_type
AS OBJECT (
"appId" varchar2,
"orgId" varchar2,
"domainId" varchar2,
"leadName" varchar2,
"personId" number
);
桌子類型
CREATE TYPE org_rspnsble_prsns_table
AS TABLE OF org_rspnsble_prsns_type;
儲存程序
CREATE OR REPLACE PROCEDURE GetNames( appIdInput IN varchar2, orgIdInput IN varchar2, p_arr OUT org_rspnsble_prsns_table )
AS
BEGIN
SELECT "appId", "orgId", "domainId", "leadName", "personId"
BULK COLLECT INTO p_arr
FROM (
select "appId", "orgId", "domainId", "leadName", "personId"
from tableA
UNION
select "appId", "orgId", "domainId", "leadName", "personId"
from tableB
)
WHERE "appId" = appIdInput
AND "orgId" = orgIdInput;
END;
我從以下位置找到了一種很好的方法: https : //asktom.oracle.com/pls/apex/ASKTOM.download_file?p_file=6551171813078805685
create or replace package types
as
type cursorType is ref cursor;
end;
/
create or replace function sp_ListEmp return types.cursortype
as
l_cursor types.cursorType;
begin
open l_cursor for select ename, empno from emp order by ename;
return l_cursor;
end;
/
create or replace procedure getemps( p_cursor in out types.cursorType )
as
begin
open p_cursor for select ename, empno from emp order by ename;
end;
/
謝謝所有回答的人。
您的SELECT選擇1變量中的5列。 你必須
A)在您選擇的對象中創建:
SELECT org_rspnsble_prsns_type("appId", "orgId", "domainId", "leadName", "personId")
BULK COLLECT INTO p_arr
...
或B)將類型創建為記錄:
CREATE TYPE org_rspnsble_prsns_type
AS RECORD (...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.