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

Откуда:
Сообщений: 382
Добрый вечер.

Хочу динамически сформировать запрос и выполнить его, но чет не получается:

DECLARE 
@SQL_var varchar
SET @SQL_var = 'IF object_id(''tempdb..#temp105'') IS NOT NULL drop table #temp105'
exec (@SQL_var)


Сообщение 2812, уровень 16, состояние 62, строка 9
Не удалось найти хранимую процедуру "I".




Подскажите как правильно это сделать?
25 май 17, 19:13    [20512701]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос?  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
@SQL_var varchar

Не влезло...
25 май 17, 19:16    [20512705]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36888
varchar = varchar (1)
25 май 17, 19:21    [20512714]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос?  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
Гавриленко Сергей Алексеевич
varchar = varchar (1)

Всегда интересовало, почему
DECLARE @var VARCHAR -- 1
SELECT CONVERT( VARCHAR, 1 ) -- 30

?
25 май 17, 19:24    [20512718]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7641
Дети, учимся читать справку...

Типы char и varchar (Transact-SQL)
Если значение n при определении данных или в инструкции объявления переменной не указано, то длина по умолчанию равна 1. Если значение n не указано при использовании функций CAST и CONVERT, длина по умолчанию равна 30.
25 май 17, 19:26    [20512723]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7641
Руслан Дамирович,

by design...
25 май 17, 19:27    [20512724]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36888
Руслан Дамирович
Всегда интересовало, почему
Потому что MS так захотелось сделать.
25 май 17, 19:27    [20512725]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос?  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
Владислав Колосов
Дети, учимся читать справку...

Прочитали. Ответа на вопрос "почему" не нашли.
Будем считать, что ответ "Потому что гладиолус".
25 май 17, 19:28    [20512726]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31326
Гавриленко Сергей Алексеевич
Руслан Дамирович
Всегда интересовало, почему
Потому что MS так захотелось сделать.
Это ещё Sybase, а в MS не стали рисковать менять, тем более что не нужно.
25 май 17, 23:38    [20513190]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос?  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
alexeyvg
Гавриленко Сергей Алексеевич
пропущено...
Потому что MS так захотелось сделать.
Это ещё Sybase, а в MS не стали рисковать менять, тем более что не нужно.

Это хотя бы проливает свет - backward compatibility...
26 май 17, 09:38    [20513530]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31326
Руслан Дамирович
alexeyvg
пропущено...
Это ещё Sybase, а в MS не стали рисковать менять, тем более что не нужно.

Это хотя бы проливает свет - backward compatibility...
Ну, это тоже не даёт ответ на вопрос "почему так сделано", сделано Sybase. (имхо синтаксис varchar без указания размера следовало запретить, вываливать ошибку).

Но вообще ТС такой вопрос и не задавал, так что непонятен ваш комментарий "Прочитали. Ответа на вопрос "почему" не нашли."
"Прочитать" советовали не про то, "почему так сделано", а про "почему не работает запрос".
26 май 17, 10:01    [20513596]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос?  [new]
sql_user2
Member

Откуда:
Сообщений: 382
Спасибо, поставил длину - заработало.



ох уж этот микрософт - затейник
26 май 17, 10:23    [20513702]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос?  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
alexeyvg
Ну, это тоже не даёт ответ на вопрос "почему так сделано", сделано Sybase. (имхо синтаксис varchar без указания размера следовало запретить, вываливать ошибку).
Но вообще ТС такой вопрос и не задавал, так что непонятен ваш комментарий "Прочитали. Ответа на вопрос "почему" не нашли."
"Прочитать" советовали не про то, "почему так сделано", а про "почему не работает запрос".

Я тот ответ принял на свой счет. Врожденный эгоцентризм.
26 май 17, 10:32    [20513759]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7641
sql_user2
Спасибо, поставил длину - заработало.



ох уж этот микрософт - затейник


Дело не в том, что кто-то затейник, а в том, что кто-то заменяет недостаток точной информации воображением.
26 май 17, 11:23    [20514004]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос?  [new]
VGalamakh
Member

Откуда: Киев (Альба)
Сообщений: 66
Гавриленко Сергей Алексеевич
varchar = varchar (1)


Select Cast('01234567890123456789' as varchar)
26 май 17, 18:13    [20515908]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36888
VGalamakh
Гавриленко Сергей Алексеевич
varchar = varchar (1)


Select Cast('01234567890123456789' as varchar)
А где вы у автора в изначальном вопросе увидели cast или convert? Или чукча не читатель, а так, лишь бы что написать?
26 май 17, 18:35    [20515973]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить