oracle PL/SQL 在 IN CLAUSE 中使用 VARRAY
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/8476610/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
PL/SQL use VARRAY in IN CLAUSE
提问by Lohit
Is it possible to use VARRAY in IN CLAUSE of pl/sql?
是否可以在 pl/sql 的 IN CLAUSE 中使用 VARRAY?
回答by Codo
Yes, you can, provided that the VARRAY type is a global type (and not local to some PL/SQL code):
是的,您可以,前提是 VARRAY 类型是全局类型(而不是某些 PL/SQL 代码的本地类型):
CREATE OR REPLACE TYPE str_tab_type IS VARRAY(10) OF VARCHAR2(200);
DECLARE
l_str_tab str_tab_type;
l_count NUMBER;
BEGIN
l_str_tab := str_tab_type();
l_str_tab.extend(2);
l_str_tab(1) := 'TABLE';
l_str_tab(2) := 'INDEX';
SELECT COUNT(*) INTO l_count
FROM all_objects
WHERE object_type IN (SELECT COLUMN_VALUE FROM TABLE(l_str_tab));
END;
/
回答by user3711142
I have the same Problem, but I don't want (and am not allowed) to define a global TYPE
我有同样的问题,但我不想(也不允许)定义全局 TYPE
When defining it local,
在本地定义时,
TYPE fkarraytype IS VARRAY(10) OF VARCHAR2(10);
fkarray fkarraytype;
The compiler Fails with:
编译器失败:
Error: PLS-00642: Lokale Erfassungstypen in SQL-Anweisungen nicht zul?ssig Text: AND fk.strval IN (SELECT COLUMN_VALUE FROM TABLE(fkarray))
错误:PLS-00642:SQL-Anweisungen nicht zul?ssig 中的 Lokale Erfassungstypen 文本:AND fk.strval IN (SELECT COLUMN_VALUE FROM TABLE(fkarray))