Скрипт pl / sql с проблемами при запуске простой процедуры - PullRequest
0 голосов
/ 17 февраля 2012

У меня есть хранимая процедура, называемая logger (message), где message имеет тип varchar2.

Когда я выполняю только

 exec logger('hello'); 

он говорит, что анонимный блок завершен, и эта процедура просто вставляет запись в другую таблицу.

Однако, когда я использую его как часть сценария, произнесите:

  Begin

    select count(*) into countCol from USER_TAB_COLUMNS where TABLE_NAME = 'EVAPP_INTERFACE_APPENTITY' and COLUMN_NAME = 'ORIGPTI_NUM' and DATA_SCALE is null; 
  IF    (countCol <> 0) then   

 execute immediate 'alter table EVAPP_INTERFACE_APPENTITY add ORIGPTI_NUM_TMP NUMBER(14,2)' ; 

 execute immediate 'update EVAPP_INTERFACE_APPENTITY set ORIGPTI_NUM_TMP = ORIGPTI_NUM' ; 

 execute immediate 'alter table EVAPP_INTERFACE_APPENTITY drop column ORIGPTI_NUM' ; 

 execute immediate 'alter table EVAPP_INTERFACE_APPENTITY rename column ORIGPTI_NUM_TMP to ORIGPTI_NUM' ; 


 DBMS_OUTPUT.put_line('This column EVAPP_INTERFACE_APPENTITY.ORIGPTI_NUM has been modified to the required precision'); 
   END IF; 

  execute logger(' first insert');

Я получаю эту ошибку, говоря:

  Error report:
  ORA-06550: line 27, column 10:
  PLS-00103: Encountered the symbol "LOGGER" when expecting one of the following:

   := . ( @ % ; immediate
   The symbol ":=" was substituted for "LOGGER" to continue.

Я попытался выполнить немедленно и просто вставив logger (), но ничего не работает.

И я не очень помог с Google, когда пытался найти выполнение хранимой процедуры в скрипте. Как мне вызвать эту процедуру?

1 Ответ

5 голосов
/ 17 февраля 2012

Удалить слово «выполнить» из этой строки:

logger(' first insert');
...