这是我的代码
DECLARE @sql nvarchar(4000)
set @sql = 'WITH CTE AS
(
Select *, ROW_NUMBER() OVER (ORDER BY ' + @order + ' ' + @Desc + ') AS RowNum
from (SELECT ID, Subject from a
WHERE (Subject LIKE N''%'' + @searchText + N''%''))
)
SELECT *
FROM CTE
WHERE RowNum BETWEEN (@pageIndex - 1) * @pageSize + 1
AND @pageIndex * @pageSize ;';
其中@order =“ID”和@pageIndex = 1和@pageSize = 5和@searchText ='a'和@Desc ='DESC'
我写了
select @sql
查看@sql是否可执行。我复制并粘贴并运行它。有效。 然后我写了
exec @sql
错误!似乎exec只是尝试从@sql的第一个执行一些字符。 @sql是否有任何限制?
p.s:错误就像这样
名称'......... someth'不是有效的标识符。
答案 0 :(得分:0)
请尝试以下代码。
DECLARE @sql nvarchar(max)
设置@sql ='.............可执行的东西.................';
由于字符串的长度超过4000个字符,可能会发生此错误