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

Откуда: Архангельск
Сообщений: 67
Добрый день! Помогите разобраться пожалуйста.

declare @_server_name_1 varchar(50)
declare @_rc int
declare @_param_id int
declare @_ncmd  nvarchar(4000)


set @_server_name_1 = 'kraftnt50asodu.asodu4.dbo'
set @_param_name = 31250

set @_ncmd = N'select @_rc = COUNT(*) from ' + @_server_name_1 + ' where PARAM_ID = '  + @_PARAM_ID
exec sp_executesql @_ncmd, N'@_rc int OUTPUT,@_server_name_input [varchar](50),@_PARAM_ID int',@_rc OUTPUT,@_server_name_1,@_PARAM_ID
	
select @_rc



Выдает ошибку: Сообщение 245, уровень 16, состояние 1, строка 224
Conversion failed when converting the nvarchar value 'select @_rc = COUNT(*) from kraftnt50asodu.asodu4.dbo where PARAM_ID = '' to data type int.
25 май 15, 13:33    [17685217]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос - ошибка  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
shortly, вам перевести сообщение об ошибке?

Подсказка - посмотрите, какая переменная у вас имеет тип int, и приводите ее явно к строковому типу в случае сложения со строками.
25 май 15, 13:35    [17685230]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос - ошибка  [new]
Glory
Member

Откуда:
Сообщений: 104751
Приведите код расположенный на "строка 224"
25 май 15, 13:36    [17685233]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос - ошибка  [new]
shortly
Member

Откуда: Архангельск
Сообщений: 67
Glory,

set @_ncmd = N'select @_rc = COUNT(*) from ' + @_server_name_1 + ' where PARAM_ID = ' + @_PARAM_ID
25 май 15, 13:38    [17685248]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос - ошибка  [new]
Glory
Member

Откуда:
Сообщений: 104751
shortly
Glory,

set @_ncmd = N'select @_rc = COUNT(*) from ' + @_server_name_1 + ' where PARAM_ID = ' + @_PARAM_ID

И вы проверили, что с чем вы складываете ?
25 май 15, 13:41    [17685263]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос - ошибка  [new]
shortly
Member

Откуда: Архангельск
Сообщений: 67
Minamoto,

set @_ncmd = N'select @_rc = COUNT(*) from ' + @_server_name_1 + ' where PARAM_ID = ' + CONVERT(nvarchar,@_PARAM_ID)


Спасибо за подсказку, заработало!
25 май 15, 13:42    [17685272]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос - ошибка  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 8933
shortly
Добрый день! Помогите разобраться пожалуйста.

declare @_server_name_1 varchar(50)
declare @_rc int
declare @_param_id int
declare @_ncmd  nvarchar(4000)


set @_server_name_1 = 'kraftnt50asodu.asodu4.dbo'
set @_param_name = 31250

set @_ncmd = N'select @_rc = COUNT(*) from ' + @_server_name_1 + ' where PARAM_ID = '  + @_PARAM_ID
exec sp_executesql @_ncmd, N'@_rc int OUTPUT,@_server_name_input [varchar](50),@_PARAM_ID int',@_rc OUTPUT,@_server_name_1,@_PARAM_ID
	
select @_rc



Выдает ошибку: Сообщение 245, уровень 16, состояние 1, строка 224
Conversion failed when converting the nvarchar value 'select @_rc = COUNT(*) from kraftnt50asodu.asodu4.dbo where PARAM_ID = '' to data type int.


Этот код вообще не пройдет синтаксический анализатор, не говоря уж про то чтобы дело дошло до ошибок конверсии.
25 май 15, 13:46    [17685294]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос - ошибка  [new]
Glory
Member

Откуда:
Сообщений: 104751
shortly
Спасибо за подсказку, заработало!

set @_ncmd = N'select @_rc = COUNT(*) from ' + @_server_name_1 + ' where PARAM_ID = @_PARAM_ID'

это если следовать из логики декларации запуска вашей sp_executesql
25 май 15, 13:47    [17685295]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос - ошибка  [new]
iap
Member

Откуда: Москва
Сообщений: 47084
Интересно, dbo - это таблица такая?
25 май 15, 13:50    [17685313]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос - ошибка  [new]
shortly
Member

Откуда: Архангельск
Сообщений: 67
Кот Матроскин,

set @_ncmd = N'select @_rc = COUNT(*) from ' + @_server_name_1 + '.DESCRIPTION where PARAM_ID = @_PARAM_ID'


пропустила название таблицы.
25 май 15, 13:52    [17685318]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос - ошибка  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1314
рискуя стать капитаном-очевидность
я все таки скажу что еще есть такая оч. полезная команда как
Print
25 май 15, 15:48    [17686120]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить