powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Вопрос по инструкции IF
7 сообщений из 7, страница 1 из 1
Вопрос по инструкции IF
    #35033690
Ziva Supernova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется кусочек кода, пусть он покажется вам весьма глупым.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
use db_1
go

if ( 2  =  1 )
  if object_id('pAllFund') is not null
    drop table pAllFund

if ( 2  =  1 )
  create table pAllFund(
         f_CrnCode    smallint,  
         f_NameShort  varchar( 3 ),
         f_Name       varchar( 20 ),     
         f_Places     tinyint,
         SrcBase      int
         )

go


Вот в чём вопрос: этот код отлично исполняется на MS SQL 2000, а на SyBase ни в какую не хочет, не заходит в первый, но всегда бывает во втором.

Версия SyBase: 12.5

Есть предположение, что для второго случая, сначало проверяется наличие таблицы, а потом проверяется инструкция if. Если это так, то как избавиться от ошибки, что таблица уже сущетсвует?
...
Рейтинг: 0 / 0
Вопрос по инструкции IF
    #35035094
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ziva Supernova wrote:
> if (*2* = *1*)
> create table pAllFund(
> f_CrnCode smallint,
> f_NameShort varchar(*3*),
> f_Name varchar(*20*),
> f_Places tinyint,
> SrcBase int
> )
>
> go
>
>
>
> Вот в чём вопрос: этот код отлично исполняется на MS SQL 2000, а на
> SyBase ни в какую не хочет, не заходит в первый, но всегда бывает во втором.

В ASE CREATE TABLE должен быть отдельным батчем. Его нельзя помещать под IF.

Следовательно, логику надо переделать так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
if not ( 2  =  1 )
   drop table pAllFund
go

go
    create table pAllFund(
           f_CrnCode    smallint,
           f_NameShort  varchar(* 3 *),
           f_Name       varchar(* 20 *),
           f_Places     tinyint,
           SrcBase      int
           )
go

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вопрос по инструкции IF
    #35036463
Ziva Supernova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, так не получится. Дело в том, что скрипт проливается на 2 базы, соотвественно для каждой из них генерится скрипт где if ( 1 = 1) и if ( 2 = 1). Так что, спасибо за совет, но так не получится.
...
Рейтинг: 0 / 0
Вопрос по инструкции IF
    #35036530
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ziva SupernovaНет, так не получится. Дело в том, что скрипт проливается на 2 базы, соотвественно для каждой из них генерится скрипт где if ( 1 = 1) и if ( 2 = 1). Так что, спасибо за совет, но так не получится.А зачем делать такие if'ы, если скрипты уже генерируются???
Что вам в итоге нужно то? Создать таблицу если ее нету и не создавать если уже есть?
...
Рейтинг: 0 / 0
Вопрос по инструкции IF
    #35036534
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И вообще, begin/end никто не отменял.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
create table a(b char( 1 ))
go

if exists (select * from sysobjects where name='a')
begin
   drop table a
end
go

if not exists (select * from sysobjects where name='a')
begin
   create table a(b char( 2 ))
end
go
...
Рейтинг: 0 / 0
Вопрос по инструкции IF
    #35036648
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
М.б. сдесь что-то еще подчерпнете...
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вопрос по инструкции IF
    #35037215
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ziva Supernova пишет:
> Нет, так не получится. Дело в том, что скрипт проливается на 2 базы,
> соотвественно для каждой из них генерится скрипт где if ( 1 = 1) и if (
> 2 = 1). Так что, спасибо за совет, но так не получится.

Не, ты не понял. У тебя ПО ДРУГОМУ НЕ ПОЛУЧИТСЯ. Получится только так.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Вопрос по инструкции IF
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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