powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Oracle DB - Как в условии IF вызвать ALTER TABLE?
3 сообщений из 3, страница 1 из 1
Oracle DB - Как в условии IF вызвать ALTER TABLE?
    #38763467
alekseich.n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Пишу программку для накатывания модификаций и таблиц в БД.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
IF (TableName = TableFind) THEN
  --БЛОК для модификации найденной таблицы.
    DBMS_OUTPUT.PUT_LINE('Таблица '||TO_CHAR(TableName)||' найдена. Модифицирую таблицу...');
    
            ALTER TABLE "GPB_AUDIT_CLIENT_FIZ" MODIFY "MODDATE" TIMESTAMP (6);
            ALTER TABLE "GPB_AUDIT_CLIENT_FIZ" ADD ("USERID" NUMBER (10,0));
          
    DBMS_OUTPUT.PUT_LINE('В таблице '||TO_CHAR(TableName)||' добавлены/модифицированы данные.');
  ELSE
  --БЛОК для создания ненайденной таблицы.
    DBMS_OUTPUT.PUT_LINE('Таблица '||TO_CHAR(TableName)||' ненайдена. Создаю таблицу...');
    
          CREATE TABLE "test_table" 
           ("PRTDATE" DATE, 
          "PRTTIME" DATE, 
          "PRTUSER" VARCHAR2(51 BYTE), 
          "PRTEVENT" VARCHAR2(151 BYTE), 
          "PRTREMARK" VARCHAR2(201 BYTE), 
          "SYSTIMESTAMP" DATE, 
          "CL_ID" NVARCHAR2(11), 
          "CL_SURNAME" NVARCHAR2(101), 
          "CL_NAME" NVARCHAR2(51), 
          "MODDATE" DATE, 
          "USERID" NUMBER(10,0)
           ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
          STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
          PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
          TABLESPACE "USERS" ;
          
    DBMS_OUTPUT.PUT_LINE('Таблица '||TO_CHAR(TableName)||' создана.');
  END IF;



Но вот не задача... вываливается ошибка.

Error report -
ORA-06550: Строка 15, столбец 13:
PLS-00103: Encountered the symbol "ALTER" when expecting one of the following:

( begin case declare 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
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:

Спотыкается на "ALTER" так как ожидает всё (begin case declare 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
Oracle DB - Как в условии IF вызвать ALTER TABLE?
    #38763473
alekseich.n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alekseich.n,

Да кстати судя по всему Create table так же не заработает..... как же быть...
...
Рейтинг: 0 / 0
Oracle DB - Как в условии IF вызвать ALTER TABLE?
    #38763702
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekseich.n,

Тынц
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Oracle DB - Как в условии IF вызвать ALTER TABLE?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]