powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Проблемы с синтаксисом
4 сообщений из 4, страница 1 из 1
Проблемы с синтаксисом
    #36265697
sanyok007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно проверить, существует ли таблица T_TABLE1 в базе и если нет, то создать ее и еще одну C_TABLE1

пишу в TOAD такой запрос:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
BEGIN ATOMIC
	IF NOT EXISTS ( SELECT TABNAME FROM SYSCAT.TABLES WHERE TABNAME = 'T_TABLE1') THEN
	BEGIN 
		CREATE TABLE SERVICE1.T_TABLE1 ( TD VARCHAR( 100 ) FOR BIT DATA  NOT NULL,  TP VARCHAR( 50 ) FOR BIT DATA  NOT NULL) IN TA_TABLESPACE; 
		CREATE TABLE SERVICE1.C_TABLE1 ( CD VARCHAR( 100 ) FOR BIT DATA  NOT NULL,  CV VARCHAR( 50 ) FOR BIT DATA  NOT NULL, CP VARCHAR( 50 ) FOR BIT DATA NOT NULL, CS VARCHAR( 50 ) FOR BIT DATA  NOT NULL) IN TA_TABLESPACE; 
	END;
	END IF;
END

DB2 Database Error: ERROR [42601] [IBM][DB2/NT] SQL0104N An unexpected token "TABLE" was found following "N BEGIN CREATE". Expected tokens may include: "JOIN". LINE NUMBER=4. SQLSTATE=42601

Понимаю, что тут скорее проблема синтаксиса поэтому надеюсь на скорый ответ.
...
Рейтинг: 0 / 0
Проблемы с синтаксисом
    #36266114
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sanyok007,

В db2 до 9.7 в анонимных блоках нельзя create делать:
Compound SQL (Dynamic) statement .
Используйте хранимые процедуры или приложения для этого.
...
Рейтинг: 0 / 0
Проблемы с синтаксисом
    #36266315
sanyok007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у меня db2 express-c 9.7
...
Рейтинг: 0 / 0
Проблемы с синтаксисом
    #36266508
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sanyok007у меня db2 express-c 9.7 Compound SQL (compiled) statement .
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
BEGIN
  DECLARE stmt varchar( 1000 );
  IF NOT EXISTS ( SELECT TABNAME FROM SYSCAT.TABLES WHERE TABNAME = 'T_TABLE1') THEN
	set stmt = 'CREATE TABLE SERVICE1.T_TABLE1 ( TD VARCHAR(100) FOR BIT DATA  NOT NULL,  TP VARCHAR(50) FOR BIT DATA  NOT NULL) IN TA_TABLESPACE'; 
	execute immediate stmt;
	set stmt = 'CREATE TABLE SERVICE1.C_TABLE1 ( CD VARCHAR(100) FOR BIT DATA  NOT NULL,  CV VARCHAR(50) FOR BIT DATA  NOT NULL, CP VARCHAR(50) FOR BIT DATA NOT NULL, CS VARCHAR(50) FOR BIT DATA  NOT NULL) IN TA_TABLESPACE'; 
	execute immediate stmt;
  END IF;
END@
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Проблемы с синтаксисом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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