我在oracle的桌子上做了一个select操作但是得到了ORA-01795所以, 然后我尝试将我的值在1000+(890623250,915941020,915941021,...... 1000+次)的列表中插入到临时表中,我无法弄清楚如何做到这一点以便以后我可以做一个从临时表中选择
所以基本上我的目标是将这1000个id插入到模式的临时表中 TEMP_L {ID INTEGER}如INSERT INTO TEMP_LINK SELECT(890623254,915941020,1000+值)
答案 0 :(得分:0)
最好使用SQL * Loader进行批量插入。另一个选择是使用Excel或记事本++为所有ID构建查询。
INSERT INTO mytable(id)
select 890623250 FROM DUAL UNION ALL
select 915941020 FROM DUAL UNION ALL
...
..
答案 1 :(得分:0)
使用集合。 SYS.ODCINUMERLIST
是内置的VARRAY
:
INSERT INTO TEMP_LINK ( value )
SELECT COLUMN_VALUE
FROM TABLE( SYS.ODCINUMBERLIST( 890623254,915941020,1000 /* + values */ ) );
或者您可以定义自己的集合:
CREATE TYPE NumberList IS TABLE OF NUMBER;
INSERT INTO TEMP_LINK ( value )
SELECT COLUMN_VALUE
FROM TABLE( NumberList( 890623254,915941020,1000 /* + values */ ) );
但是,如果您打算使用集合,那么您不需要将它们加载到临时表中:
SELECT *
FROM your_table
WHERE your_id MEMBER OF NumberList( 890623254,915941020,1000 /* + values */ )
或
SELECT *
FROM your_table
WHERE your_id IN (
SELECT COLUMN_VALUE
FROM TABLE( 890623254,915941020,1000 /* + values */ )
);