Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Не работает DROP TABLE  [new]
Ewgeny911
Member

Откуда:
Сообщений: 29
Здравствуйте! Подскажите пожалуйста почему не работает следующая последовательность комманд.
Предположим в базе есть простая табличка A_Table1 не связаянная ни с кем, без ключей, индексов и т.д.
Команды:
DROP TABLE A_Table1          --Удаляем табличку
CREATE TABLE A_Table20     
(Group1 VARCHAR(100) NULL,
Policy VARCHAR(25) NULL,
LastName VARCHAR(50) NULL)  -- создаем структуру ОТЛИЧАЮЩУЮСЯ от той которую удалили
INSERT INTO A_Table20 (Group1, Policy, LastName) values ('aaa', 'bbb', 'ccc') -- здесь ругается что полей таких 
--нет (в табличке которую удалили таких полей не было).
Почему ругается? Если по одной команде выполнять то срабатывает, а все вместе нет. Не работает ни из под SQL Server Management Studio ни из клиентской программы.
25 май 12, 16:36    [12616737]     Ответить | Цитировать Сообщить модератору
 Re: Не работает DROP TABLE  [new]
Glory
Member

Откуда:
Сообщений: 104751
DROP TABLE A_Table1          --Удаляем табличку
GO
CREATE TABLE A_Table20     
(Group1 VARCHAR(100) NULL,
Policy VARCHAR(25) NULL,
LastName VARCHAR(50) NULL)  -- создаем структуру ОТЛИЧАЮЩУЮСЯ от той которую удалили
INSERT INTO A_Table20 (Group1, Policy, LastName) values ('aaa', 'bbb', 'ccc') -- здесь ругается что полей таких 
--нет (в табличке которую удалили таких полей не было).
25 май 12, 16:38    [12616763]     Ответить | Цитировать Сообщить модератору
 Re: Не работает DROP TABLE  [new]
Ewgeny911
Member

Откуда:
Сообщений: 29
Glory, Йес! Так работает! Спасибо огромное!
25 май 12, 16:40    [12616783]     Ответить | Цитировать Сообщить модератору
 Re: Не работает DROP TABLE  [new]
Ewgeny911
Member

Откуда:
Сообщений: 29
Хм.. все таки не работает. В Studio действительно c GO работает без проблем. А из клиентской программы не хочет.
Я посылаю все запросы в виде текста в хранимку и далее в хранимке EXEC(МойТекст).
Собственно вот хранимка:
CREATE PROCEDURE [dbo].[spen_TEMPTABLE]( 	 
  @QUERYSTRING text   
) AS 

Exec(@QUERYSTRING)
GO
Ругается на тот запрос перед которым стоит GO.
GO нельзя использовать в EXEC? Как тогда удалить и создать табличку?
25 май 12, 17:10    [12617068]     Ответить | Цитировать Сообщить модератору
 Re: Не работает DROP TABLE  [new]
Alexandr Kr.
Member

Откуда: Украина, Харьков
Сообщений: 165
Ewgeny911,

Заворачивайте значит в динамику
exec('
INSERT INTO A_Table20 (Group1, Policy, LastName) values (''aaa'', ''bbb'', ''ccc'') 
')
25 май 12, 17:16    [12617128]     Ответить | Цитировать Сообщить модератору
 Re: Не работает DROP TABLE  [new]
Ewgeny911
Member

Откуда:
Сообщений: 29
Вложенный Exec? Пробовал - не работает.
25 май 12, 17:37    [12617307]     Ответить | Цитировать Сообщить модератору
 Re: Не работает DROP TABLE  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Ewgeny911
Вложенный Exec? Пробовал - не работает.


К сообщению приложен файл. Размер - 7Kb
25 май 12, 17:38    [12617317]     Ответить | Цитировать Сообщить модератору
 Re: Не работает DROP TABLE  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Ewgeny911
Хм.. все таки не работает. В Studio действительно c GO работает без проблем. А из клиентской программы не хочет.
Я посылаю все запросы в виде текста в хранимку и далее в хранимке EXEC(МойТекст).
Собственно вот хранимка:
CREATE PROCEDURE [dbo].[spen_TEMPTABLE]( 	 
  @QUERYSTRING text   
) AS 

Exec(@QUERYSTRING)
GO
Ругается на тот запрос перед которым стоит GO.
GO нельзя использовать в EXEC? Как тогда удалить и создать табличку?


1. как посылаете?
2. как "ругается"?
25 май 12, 17:55    [12617466]     Ответить | Цитировать Сообщить модератору
 Re: Не работает DROP TABLE  [new]
Alexandr Kr.
Member

Откуда: Украина, Харьков
Сообщений: 165
Ewgeny911
Вложенный Exec? Пробовал - не работает.


Так небось кавычки одинарные не задваивали жеж. Вот оно и не работает.
25 май 12, 18:27    [12617635]     Ответить | Цитировать Сообщить модератору
 Re: Не работает DROP TABLE  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Ewgeny911
Хм.. все таки не работает. В Studio действительно c GO работает без проблем. А из клиентской программы не хочет.
Я посылаю все запросы в виде текста в хранимку и далее в хранимке EXEC(МойТекст).
Собственно вот хранимка:
CREATE PROCEDURE [dbo].[spen_TEMPTABLE]( 	 
  @QUERYSTRING text   
) AS 

Exec(@QUERYSTRING)
GO
Ругается на тот запрос перед которым стоит GO.
GO нельзя использовать в EXEC? Как тогда удалить и создать табличку?
Разделите запрос на несколько частей (по GO) и посылайте каждый отдельно.
А еще не понятно на кой вам такая оберточная хранимка? Или вы думаете оно в таком виде защитит вас от SQL Injection? Почему не запускать нужные запросы прям с клиента?
25 май 12, 20:14    [12618095]     Ответить | Цитировать Сообщить модератору
 Re: Не работает DROP TABLE  [new]
Дмитрий_sql
Member

Откуда:
Сообщений: 35
А почему Вы удаляете одну таблицу и одновременно создаёте другую?

Такое точно сработает:

exec ('DROP TABLE A_Table20') --Удаляем табличку
exec('CREATE TABLE A_Table20' (Group1 VARCHAR(100) NULL, Policy VARCHAR(25) NULL, LastName VARCHAR(50) NULL) '); -- создаем структуру ОТЛИЧАЮЩУЮСЯ от той которую удалили

exec('INSERT INTO A_Table20 (Group1, Policy, LastName) values (''aaa'', ''bbb'', ''ccc'') ')
28 май 12, 11:05    [12624485]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить