我想将表参数传递给Oracle存储过程,并返回带有表值和一些额外数据的游标,即
CREATE OR REPLACE PACKAGE EVENTPACKAGE AS
TYPE T_STRING_TAB IS TABLE OF VARCHAR2(260) INDEX BY BINARY_INTEGER;
END;
create or replace
procedure spTest(eventids in EVENTPACKAGE.T_STRING_TAB, p_cursor in out sys_refcursor)
as
begin
open p_cursor for
select * from
(
select *, 'test1', 'test2' from eventids
);
end;
因此,如果eventids
包含3个称为“第一”,“第二”和“第三”的字符串,则过程将返回:
"First", "test1", "test2"
"Second", "test1", "test2"
"Third", "test1", "test2"
该参数是一个表,所以为什么不起作用?
答案 0 :(得分:0)
几个问题:
哪个给:
var cur refcursor;
create or replace package eventpackage as
type t_string_tab is table of varchar2(20)
index by pls_integer;
string_tab t_string_tab;
end;
/
begin
eventpackage.string_tab(1) := 'First';
eventpackage.string_tab(2) := 'Second';
eventpackage.string_tab(3) := 'Third';
open :cur for
select * from (
select t.*, 'test1', 'test2'
from table (
eventpackage.string_tab
) t
);
end;
/
print :cur;
Result Sequence 'TEST 'TEST
-------------------- ----- -----
First test1 test2
Second test1 test2
Third test1 test2