2016-10-24 5 views
0

Я пишу динамический запрос для поискового вызова. ниже - последняя часть исполняемого запроса, и когда я печатаю его и запускаю в другом окне, он отлично работает. но когда я использую exec, он показывает красную кривую для литья деталей (CAST (@pint_StartRowIndex AS VARCHAR)), как показано в прикрепленном изображении.Динамический SQL-запрос Проблема - SQL Server

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

enter image description here

+0

Создайте свою команду, а затем передать его в EXEC, то есть 'объявить @sqlcommand NVARCHAR (max), установите @sqlcommand = 'this' + that; exec (@sqlcommand) ' – artm

+0

@artm Я сделал это на первом месте. Но там будут дополнительные условия для запроса. в этом случае я использовал минимальные условия. поскольку я знаю, что varchar (max) может содержать только 8000 символов. я сомневаюсь, что с дополнительными условиями этот предел может превысить. Вот почему я попытался выполнить, как указано выше – user2837480

ответ

1

попробовать так:

exec ('SELECT * from table where Rank BETWEEN CAST ('+ @start + 'as nvarchar)' + ' AND cast (' + @end + 'as nvarchar)') 

цитата все как строки, кроме @start и @end

+0

Спасибо, помощник. это сработало – user2837480

Смежные вопросы