我需要一些数组类型的支持,因为对我来说这是一个新东西,所以
我有一个功能:
create or replace type num_array as table of number;
create or replace function functionname(arr_in num_array)
return num_array is
tab num_array;
begin
select id_acc bulk collect into tab from (
SELECT a.id_acc
FROM (SELECT id_acc, parent_acc FROM account) a
connect by nocycle prior a.id_acc=a.parent_acc
start with id_acc in
(
select distinct ID_ACC
from (SELECT id_acc, parent_acc FROM account
) a
where parent_acc = id_acc
connect by nocycle prior a.parent_acc = a.id_acc or parent_acc is null
start with id_acc in (select parent_acc from table_name t,account a where t.id=a.id_acc)));
return tab;
end;
作为输入,我想要一个数字数组(id)。我想将该号码(来自输入)与帐户表连接起来。这是一致的:
start with id_acc in (select parent_acc from table_name t,account a where t.id=a.id_acc)));
我想以某种方式加入表格帐户,输入数字, 我试图使用表(tab()),帐户a但我收到了错误。 作为输出我想有选择查询的结果(返回标签)。
答案 0 :(得分:2)
我不确定我理解你想要达到的目标。只是为了帮助您解决语法问题,请看:
start with id_acc in (select * from table(arr_in));
答案 1 :(得分:0)
下面我提供了一个小片段,它基本上说明了将Nested Table类型与Table连接的问题。
CREATE OR REPLACE FUNCTION test_ntt_join
RETURN NUMBER_NTT
AS
lv_tab_num NUMBER_NTT;
lv_tab2 NUMBER_NTT;
BEGIN
SELECT LEVEL BULK COLLECT INTO lv_tab_num FROM DUAL CONNECT BY LEVEL < 10;
SELECT COLUMN_VALUE
BULK COLLECT INTO
lv_tab2
FROM TABLE(lv_tab_num) t,
EMP
WHERE emp.empno= t.column_value;
RETURN lv_tab2;
END;
------------------------------------------OUTPUT------------------------------------
select * from table(test_ntt_join);
COLUMN_VALUE
1
1
3
------------------------------------------OUTPUT------------------------------------