有什么方法可以在SELECT语句的IN子句中使用本地表类型,而无需指定表类型的索引?
DECLARE
TYPE temp_rec_TYPE IS RECORD (
n_temp_id NUMBER
);
TYPE temp_tab_TYPE IS TABLE OF temp_rec_TYPE INDEX BY PLS_INTEGER;
temp_tab temp_tab_TYPE;
n_temp_id2 NUMBER;
BEGIN
temp_tab(1).n_temp_id := 1;
FOR temp_rec IN (SELECT * FROM example_table WHERE id IN temp_tab)
LOOP
NULL;
END LOOP;
END;
执行返回“ PLS-00382:表达式类型错误”
不,SQL表达式只能引用在SQL范围(不是PL / SQL范围-即不在包或PL / SQL块中)中生成的类型。
您想要的是这样的:
CREATE TYPE number_list IS TABLE OF NUMBER;
/
DECLARE
temp_tab number_list;
BEGIN
temp_tab := number_list( 1 );
FOR temp_rec IN (SELECT * FROM example_table WHERE id MEMBER OF temp_tab)
LOOP
NULL;
END LOOP;
END;
/
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句