SQL Server sp_executesql ошибка со строкой SQL - PullRequest
1 голос
/ 04 октября 2011

У меня есть строка, которая выглядит следующим образом:

set @sqlstring = N'select @mindate = min(time), @maxdate = max(time) from ' + @st_churn_active_table;

Я печатаю это, и это выглядит так:

select @mindate = min(time), @maxdate = max(time) from derp.derp_table

Я запускаю sp_executesql с такими параметрами:

execute sp_executesql @sqlstring, N'@maxdate date,@mindate date'

Это ошибки вроде этого:

The parameterized query '(@maxdate date,@mindate date)select @mindate = min(time), @maxda' expects the parameter '@maxdate', which was not supplied.

Строка становится
'(@ maxdate date, @ mindate date) выберите @mindate = min (время), @ maxda'
Строка sql обрезана, кто-нибудь знает, почему и как это исправить?

Спасибо!

Ответы [ 2 ]

1 голос
/ 04 октября 2011

Прежде всего, sql server увидел всю строку.Это только сообщение об ошибке , которое усекает его.Обратите внимание, что в результате ошибки правильно получено имя отсутствующего параметра, даже если усеченная строка sql содержала только часть имени.

Во-вторых, это не сработает так, как вы этого хотите. Вы не можете использовать выходные параметры таким образом с sp_executesql.

Но, наконец, возникла проблема, почему возникает ошибка.Я не могу быть уверен, но я подозреваю, что проблема здесь в том, что существует несоответствие типов, и поэтому он не может использовать параметр, который вы ему дали.Я хотел бы надеяться, что sql-сервер выдаст лучшее сообщение об ошибке (жалуются на несоответствие типов) в этой ситуации, но у меня нет sql-сервера, удобного для тестирования, и я не могу придумать какой-либо другой причины для этогопроблема.

...