powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE 12.5.1 и isql
9 сообщений из 9, страница 1 из 1
ASE 12.5.1 и isql
    #33067320
nik2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый

Linux, ASE 12.5.1

есть кусок кода:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
if not exists(select id from sysobjects where name='VersionHistory')
  CREATE TABLE VersionHistory (
    id BIDENT IDENTITY,
    MajorVersion int NOT NULL,
    MinorVersion int NOT NULL,
    ReleaseNum int NOT NULL,
    Build int NOT NULL,
    Patch int NULL,
    StartDatetime datetime NOT NULL,
    StopDatetime datetime NOT NULL)

Объект VersionHistory присутствует, трабла собственно в том, что если запустить этот кусок кода в интерактивном режиме, то create table не отрабатываети ( что собственно и верно ), если же `isql .... -D CORRECT_DB -i file_with_this_code.sql` то отрабатывается в результате чего пытается создать еще раз таблицу и вываливается с ошибкой....

Кто нибудь подскажет где грабли ?
...
Рейтинг: 0 / 0
ASE 12.5.1 и isql
    #33067404
nik2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вернее даже не так.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
[ 577 ] billing.bill_2. 1 > if not exists(select id from sysobjects where name='VersionHistory')
[ 577 ] billing.bill_2. 2 > begin
[ 577 ] billing.bill_2. 3 >         print "Table Not EXISTS"
[ 577 ] billing.bill_2. 4 >         CREATE TABLE VersionHistory (
[ 577 ] billing.bill_2. 5 >                 id BIDENT IDENTITY,
[ 577 ] billing.bill_2. 6 >                 MajorVersion int NOT NULL,
[ 577 ] billing.bill_2. 7 >                 MinorVersion int NOT NULL,
[ 577 ] billing.bill_2. 8 >                 ReleaseNum int NOT NULL,
[ 577 ] billing.bill_2. 9 >                 Build int NOT NULL,
[ 577 ] billing.bill_2. 10 >                 Patch int NULL,
[ 577 ] billing.bill_2. 11 >                 StartDatetime datetime NOT NULL,
[ 577 ] billing.bill_2. 12 >                 StopDatetime datetime NOT NULL )
[ 577 ] billing.bill_2. 13 >         print "Print N 2"
[ 577 ] billing.bill_2. 14 > end
[ 577 ] billing.bill_2. 15 > go
Msg  2714 , Level  16 , State  1 
Server 'B133', Line  4 
There is already an object named 'VersionHistory' in the database.

тоесть и в интерактивном режиме оно отрабатывает, только как то странно... Тоесть принты проигнорировала, а crreate table выполнила... Почему ???
...
Рейтинг: 0 / 0
ASE 12.5.1 и isql
    #33067573
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Линух не линух = это все равно,
а вот оператор CREATE TABLE должен быть целиком в
отдельном батче. Т.е. IF до него писать нельзя.
Поэтому пишут немного по другому :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
if exists(select id from sysobjects where name='VersionHistory')
  drop table VersionHistory
go

  CREATE TABLE VersionHistory (
    id BIDENT IDENTITY,
    MajorVersion int NOT NULL,
    MinorVersion int NOT NULL,
    ReleaseNum int NOT NULL,
    Build int NOT NULL,
    Patch int NULL,
    StartDatetime datetime NOT NULL,
    StopDatetime datetime NOT NULL)
go
...
Рейтинг: 0 / 0
ASE 12.5.1 и isql
    #33067622
nik2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
дык задачка несколько в другом
надо проверить если нет таблици то создать ее если есть то ничего не делать.

засада даже не в том что оно ругается а в том что вся эта байда от билинга, комерческого, мать их так не хорошо, так вот там go один раз в конце стоит а после каждого оператора проверка на ошибки и если ошибка то goto error....
...
Рейтинг: 0 / 0
ASE 12.5.1 и isql
    #33067685
michael_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Был уже подобный топик. Мы в это тоже вляпывались. На ASE 11 такая конструкция прекрасно работала, на 12 перестала.

Смех в том, что такой скрипт генерит Sybase Power Designer!
...
Рейтинг: 0 / 0
ASE 12.5.1 и isql
    #33067897
nik2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
michael_Был уже подобный топик.

Спасибо, почитал....
...
Рейтинг: 0 / 0
ASE 12.5.1 и isql
    #33073247
nik2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 michael

извини, перечитал еще раз ваш пост за 2004 год, и... не понял. Не подскажек как вы все таки реализовали данную логику ? То есть если нет таблици то создать ее.
...
Рейтинг: 0 / 0
ASE 12.5.1 и isql
    #33073285
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Через динамический SQL

if not exists (select name from sysobjects where name = "VersionHistory")
exec ("CREATE TABLE VersionHistory (id numeric(10, 0) identity, MajorVersion int NOT NULL, MinorVersion int NOT NULL, ReleaseNum int NOT NULL, Build int NOT NULL, Patch int NULL, StartDatetime datetime NOT NULL, StopDatetime datetime NOT NULL)")
...
Рейтинг: 0 / 0
ASE 12.5.1 и isql
    #33073324
nik2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
morisЧерез динамический SQL

if not exists (select name from sysobjects where name = "VersionHistory")
exec ("CREATE TABLE VersionHistory (id numeric(10, 0) identity, MajorVersion int NOT NULL, MinorVersion int NOT NULL, ReleaseNum int NOT NULL, Build int NOT NULL, Patch int NULL, StartDatetime datetime NOT NULL, StopDatetime datetime NOT NULL)")

блин, работает. Спасибо.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE 12.5.1 и isql
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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