Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Ошибка Incorrect syntax near ';  [new]
Dr.Livsi
Member

Откуда:
Сообщений: 18
Добрый день.

Есть запрос

USE KIS_VIEW
GO

DECLARE @catalog nvarchar(300);
DECLARE @schema nvarchar(300);
DECLARE @name nvarchar(300);
DECLARE @definition nvarchar(300);
DECLARE @option nvarchar(300);
DECLARE @updatatable nvarchar(300);

DECLARE cur CURSOR FOR
SELECT
*
FROM
INFORMATION_SCHEMA.VIEWS;
OPEN cur;
FETCH NEXT FROM cur INTO @catalog, @schema, @name, @definition, @option, @updatatable;
EXECUTE('IF OBJECT_ID(''' + @name + ''') IS NOT NULL DROP VIEW ' + @name + ';');
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM cur INTO @catalog, @schema, @name, @definition, @option, @updatatable;
EXECUTE('IF OBJECT_ID(''' + @name + ''') IS NOT NULL DROP VIEW ' + @name + ';');
END
CLOSE cur;
DEALLOCATE cur;
GO

При попытке выполнить его в MSSMS получаю ошибку.

Сообщение 102, уровень 15, состояние 1, строка 3
Incorrect syntax near ';'.


Хотя по документации на msdn вроде все корректно, синтаксис контроль проходит.
Подскажите, пожалуйста, где именно ошибка.
29 мар 18, 11:23    [21295468]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка Incorrect syntax near ';  [new]
iiyama
Member

Откуда:
Сообщений: 642
Dr.Livsi,

замените Execute на print и посмотрите на команду который формирует Ваш DSQL
29 мар 18, 11:34    [21295508]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка Incorrect syntax near ';  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Dr.Livsi,

1. зачем 2 раза одно и тоже?
2. 1й вызов из за пустого курсора даст ошибку
29 мар 18, 11:35    [21295523]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка Incorrect syntax near ';  [new]
Kopelly
Member

Откуда: Красноярск
Сообщений: 289
TaPaK,

По-моему последний шаг цикла не получит данные из курсора, но попытается выполнить EXECUTE(...)
29 мар 18, 11:42    [21295552]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка Incorrect syntax near ';  [new]
Kopelly
Member

Откуда: Красноярск
Сообщений: 289
Dr.Livsi,
OPEN cur;
FETCH NEXT FROM cur INTO @catalog, @schema, @name, @definition, @option, @updatatable;
WHILE @@FETCH_STATUS = 0
BEGIN
	EXECUTE('IF OBJECT_ID(''' + @name + ''') IS NOT NULL DROP VIEW ' + @name + ';'); 
	FETCH NEXT FROM cur INTO @catalog, @schema, @name, @definition, @option, @updatatable;
END
CLOSE cur;
29 мар 18, 11:43    [21295557]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка Incorrect syntax near ';  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Kopelly
TaPaK,

По-моему последний шаг цикла не получит данные из курсора, но попытается выполнить EXECUTE(...)

угу, там весь порядок не в дугу :) ну и 2 fetch писать тоже не кошерно, не считая 2 exec :)
29 мар 18, 11:43    [21295559]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка Incorrect syntax near ';  [new]
Владимир Третяк
Member

Откуда:
Сообщений: 1
Попорбуйте так:


DECLARE @catalog nvarchar(300);
DECLARE @schema nvarchar(300);
DECLARE @name nvarchar(300);
DECLARE @definition nvarchar(300);
DECLARE @option nvarchar(300);
DECLARE @updatatable nvarchar(300);

DECLARE cur CURSOR FOR
SELECT
*
FROM
INFORMATION_SCHEMA.VIEWS;
OPEN cur;
FETCH NEXT FROM cur INTO @catalog, @schema, @name, @definition, @option, @updatatable;

WHILE @@FETCH_STATUS = 0
BEGIN

EXECUTE('IF OBJECT_ID(''' + @name + ''') IS NOT NULL DROP VIEW ' + @name + ';');
FETCH NEXT FROM cur INTO @catalog, @schema, @name, @definition, @option, @updatatable;

END
CLOSE cur;
DEALLOCATE cur;


В вашем случае если "SELECT * FROM INFORMATION_SCHEMA.VIEWS" не отдает строк, то все равно выполняется код EXECUTE() с параметром null
29 мар 18, 11:47    [21295572]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка Incorrect syntax near ';  [new]
Dr.Livsi
Member

Откуда:
Сообщений: 18
Вот вы меня сейчас прям растоптали интеллектом :)
T`SQL я знаю посредственно. Поэтому чувствую, что по каждому ответу меня ждет долгое путешествие по msdn :)
Всем большое спасибо за ответы.
29 мар 18, 12:03    [21295641]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка Incorrect syntax near ';  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Dr.Livsi
Вот вы меня сейчас прям растоптали интеллектом :)
T`SQL я знаю посредственно. Поэтому чувствую, что по каждому ответу меня ждет долгое путешествие по msdn :)
Всем большое спасибо за ответы.

действительно, ведь первое что пишут на sql это гроханье всех представлений
29 мар 18, 12:06    [21295654]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить