2015-03-06 3 views
-2

Я пытаюсь создать временную таблицу в Oracle.Не удалось создать временную таблицу в хранимой процедуре в Oracle

Я сделал это в SQL Server, как это:

IF object_id('tempdb..#qcCSTemp') IS NOT NULL 
BEGIN 
    DROP TABLE #qcCSTemp 
END 

Я хочу что-то подобное в Oracle. Я попробовал этот код:

create global temporary table temptable (mgr number); 

, но я получаю сообщение об ошибке:

Error(32,7): PLS-00103: Encountered the symbol "CREATE" when expecting one of the following: (begin case declare end exception exit for goto if loop mod null pragma raise return select update while with << continue close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe purge

Пожалуйста совет.

Заранее спасибо.

+0

Вы можете добавить еще немного кода твоего лучшего понимания? –

+0

** (1) ** Найдите руководства для Oracle (физические или онлайн), ** (2) ** найдите точный синтаксис для 'CREATE TABLE' и ** (3) ** используйте этот синтаксис. ... –

+5

Временные таблицы в Oracle сильно отличаются от временных таблиц в SQL Server. Временные таблицы в Oracle - это глобальные временные таблицы - определение видимо для всех сеансов, только данные являются локальными для сеанса - в отличие от локальных временных таблиц на SQL Server, где определение видимо только для сеанса. В Oracle, если вам нужна временная таблица, которая является редкой, она будет создана один раз в то же время, когда вы создадите все свои постоянные таблицы. Он не будет создан и не будет удален во время выполнения. –

ответ

0
begin 
     create global temporary table temptable (mgr number); 
    end; 
    /

ОРА-06550: строка 2, столбец 3: PLS-00103: Встречающиеся символ "CREATE", когда ожидает одно из следующих действий:

(начинают случай объявить выход для Goto, если цикл по модулю нуль прагма повышения возврат выберите обновление в то время как с < < продолжает закрывать текущие удаления выборки предохранительного вкладыш открытого откат набора SQL точки сохранения выполнить коммит FORALL слияние трубы Чистке

begin 
     execute immediate 'create global temporary table temptable (mgr number)'; 
    execute immediate 'insert into temptable select pct_free from dba_tables'; 
    execute immediate 'insert into temptable values(-99)'; 
    end; 
    /

4/ процедура PL/SQL успешно завершена

select count(*) from temptable; 

    0 
+0

спасибо, за ответ. Но таблица не указана в приведенных ниже сценариях. Кроме того, как мне вставлять данные в соблазн из другой таблицы. –

+0

Здравствуйте, я меняю код, чтобы ответить на ваш вопрос – eliatou

Смежные вопросы