вставить 1000+ длинных чисел в таблицу темпов оракула - PullRequest
0 голосов
/ 29 мая 2018

Я выполнял операцию выбора для своей таблицы в oracle, но получал ORA-01795, поэтому я пытаюсь вставить свои значения в список порядка 1000+ (890623250,915941020,915941021, .... 1000+ раз)во временную таблицу, и я не могу понять, как это сделать, чтобы потом я мог сделать выбор из временной таблицы

Так что в основном моя цель состоит в том, чтобы вставить эти 1000 идентификаторов в временную таблицу схемы TEMP_L{ID INTEGER} как INSERT INTO TEMP_LINK SELECT (890623254,915941020,1000+ значений)

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Используйте коллекцию.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 */ )
);
0 голосов
/ 29 мая 2018

Предпочтительно использовать SQL * Loader для массовых вставок.Еще один вариант - создать запрос с использованием Excel или notepad ++ для всех идентификаторов.

INSERT INTO mytable(id) 
select 890623250 FROM DUAL UNION ALL
select 915941020 FROM DUAL UNION ALL
...
..
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...