CREATE TYPE MyListOfValuesType AS TABLE OF VARCHAR2(4000);
然后在SQL语句中使用它
DECLARE
MyListOfValues MyListOfValuesType;
BEGIN
MyListOfValues := MyListOfValuesType('MyValue1', 'MyValue2');
FOR rec IN (
SELECT *
FROM DatabaseTable
WHERE DatabaseTable.Field in (
SELECT * FROM TABLE(MyListOfValues)
)
)
LOOP
...
END LOOP;
END;
WITH MyListOfValues(col1) AS (
select 'MyValue1' from dual union
select 'MyValue2' from dual union
select 'MyValue3' from dual
)
SELECT *
FROM DatabaseTable
WHERE Column in (
select col1
from MyListOfValues);
SELECT REGEXP_SUBSTR ('a,b,c,d,e,f,g,h', '[^,]+', 1, LEVEL) pivot_char
FROM DUAL
CONNECT BY REGEXP_SUBSTR ('a,b,c,d,e,f,g,h', '[^,]+', 1, LEVEL) IS NOT NULL;
4条答案
按热度按时间pxy2qtax1#
像这样创建SQL类型:
然后在SQL语句中使用它
在Oracle 11 g之前,这只适用于SQL
TABLE
类型,而不适用于PL/SQLTABLE
类型。在Oracle 12 c中,您还可以使用PL/SQL类型。zhte4eai2#
使用集合:
或者使用内置类型,如
SYS.ODCIVARCHAR2LIST
或SYS.ODCINUMBERLIST
:kcugc4gi3#
使用WITH子句来构建一个临时表怎么样?不是真实的的可重复使用。你可以使用一个数组,或者我认为加入一个查找表会更好。
vtwuwzda4#
我从:
https://www.tek-tips.com/viewthread.cfm?qid=1639911