2012-06-21 5 views
1

Я пытаюсь обновить представление SQL Server 2008, и когда я запускаю следующий скрипт, я получаю следующую ошибку.Обновление SQL Server 2008 View

IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS 
WHERE TABLE_NAME = 'oas_AppVend') 

ОШИБКА:.

Msg 102, Level 15, State 1, Line 2 
Incorrect syntax near ')'. 

Если я бегу sript, как показано ниже (нет, если и не скобка), то результат показывает мне «VIEW»

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS 
WHERE TABLE_NAME = 'oas_AppVend' 

РЕЗУЛЬТАТ:

TABLE_NAME 
oas_AppVend 

Любые идеи?

+0

Можете ли вы опубликовать весь SQL-скрипт? – EkoostikMartin

+0

Нужна дополнительная информация, например, до/после оператора IF ... –

ответ

2

Эта ошибка просто потому, что сценарий, который вы написали, недостаточно. Механизму SQL все еще нужно знать, что делать после if.

IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS 
WHERE TABLE_NAME = 'oas_AppVend') 
BEGIN 
    /* VALID SQL STATEMENT MUST EXIST HERE */ 
END 

Примечание: даже указанный выше код вернет ошибку, пока вы не поместите действительный оператор sql в блок, где я отметил. Если у вас есть желаемые результаты для другого, это будет выглядеть так же, как бы то ни было, это не действительный оператор, пока вы его не закончите.

IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS 
WHERE TABLE_NAME = 'oas_AppVend') 
BEGIN 
    /* VALID SQL STATEMENT MUST EXIST HERE */ 
END 
ELSE 
BEGIN 
    /* DO SOMETHING ELSE */ 
END 
+0

Могу ли я создать это как процедуру, чтобы пользователь мог ее запускать, или я бы, когда программисту нужно заходить и запускать его каждый раз? Последний вопрос, должно ли обновление обновляться автоматически, если записи в базовых таблицах меняются? Еще раз спасибо. Ken –

+0

Да, приведенный выше пример кода может использоваться внутри хранимой процедуры. Вы можете поместить любые другие допустимые операторы SQL в идентифицированные блоки и до тех пор, пока пользователь, выполняющий proc, имеет права, он будет работать нормально. К вашему второму Q да, представление - это просто хранимый оператор выбора ... так что все, что находится в таблице, на которой основан взгляд, будет тем, что отражается в представлении в любое время, когда оно выполняется. – RThomas