T-SQL + Create View + IF

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

T-SQL + Create View + IF

Сообщение Ramzes » 08.11.2006 (Ср) 19:45

Код: Выделить всё
use pubs
IF NOT EXISTS (SELECT * FROM [dbo].[sysobjects] WHERE id = OBJECT_ID(N'[dbo].[VAuthors]'))
BEGIN
Create View VAuthors as
(SELECT * FROM [dbo].[authors])
END

Ошибка, но если разбить код на блоки:
Этот код рабочий
Код: Выделить всё

Create View VAuthors as
(SELECT * FROM [dbo].[authors])

Этот код тоже рабочий:
Код: Выделить всё

IF NOT EXISTS (SELECT * FROM [dbo].[sysobjects] WHERE id = OBJECT_ID(N'[dbo].[VAuthors]'))
BEGIN
SELECT 'Hello world'
END

а месте они работать не хотят, где туплю :?: :roll:

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 08.11.2006 (Ср) 20:08

А если создание вьюхи не внутрь блока засунуть, а обходить через GOTO?
Да и вообще, вьюхи обычно не так создаются.
Т.е. не IF ... CREATE ... END, а IF ... DROP ... END ... CREATE.
Lasciate ogni speranza, voi ch'entrate.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 09.11.2006 (Чт) 6:50

alibek писал(а):Да и вообще, вьюхи обычно не так создаются.
Т.е. не IF ... CREATE ... END, а IF ... DROP ... END ... CREATE.

Правильно.
Если открыть BOL, то уже вторая строчка текста гласит: "CREATE VIEW must be the first statement in a query batch".
Почему Ramzes не читает BOL, мне не ясно...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 09.11.2006 (Чт) 11:51

GSerg
У меня не написано :oops:

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 09.11.2006 (Чт) 12:09

alibek писал(а):А если создание вьюхи не внутрь блока засунуть, а обходить через GOTO?
Да и вообще, вьюхи обычно не так создаются.
Т.е. не IF ... CREATE ... END, а IF ... DROP ... END ... CREATE.

Ни через GOTO, ни через
IF...DROP...END....CREATE
не получаеться
получаеться только через

Код: Выделить всё
sp_executesql

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 09.11.2006 (Чт) 14:12

Ramzes, ты определённо не читаешь BOL.

IF EXISTS ... DROP ...
GO

CREATE VIEW ...
GO
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 09.11.2006 (Чт) 16:03

GSerg писал(а):Ramzes, ты определённо не читаешь BOL.
IF EXISTS ... DROP ...
GO
CREATE VIEW ...
GO


Кстати, первая строчка в MSDN:

Creates a virtual table that represents the data in one or more tables in an alternative way. CREATE VIEW must be the first statement in a query batch.


И пример применения, аналогичный вышеприведенному, есть там-же...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 09.11.2006 (Чт) 17:37

GSerg писал(а):Ramzes, ты определённо не читаешь BOL.

IF EXISTS ... DROP ...
GO

CREATE VIEW ...
GO


НЕЧИТАЮ, НЕГДЕ МНЕ ЕГО ЧИТАТЬ :evil:

А вот что в MSDN не посмотрел, да виноват

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 09.11.2006 (Чт) 17:45

Lasciate ogni speranza, voi ch'entrate.

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 09.11.2006 (Чт) 18:29

alibek
Уже был, точнее не был, но поставил себе Client Tools

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 09.11.2006 (Чт) 18:33

Причем тут Client Tools? Я про Book Online.
А если говорить за 2005, то BOL свежий есть, да еще и на русском языке.
Lasciate ogni speranza, voi ch'entrate.

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 09.11.2006 (Чт) 19:09

alibek
Когда ставишь Client Tools, мастер установки предлагает ставить Book Online ;)


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

    TopList  
cron