T-Sql动态查询字符串限制

T-Sql动态查询字符串限制,sql,tsql,dynamic-sql,Sql,Tsql,Dynamic Sql,我得到一个奇怪的例外,说“ " 我正在执行以下查询。 " { } 我无法理解到底是什么问题?在像我这样执行动态Sql时,我们是否有一些字符限制。我尝试打印@Sql中得到的内容,我可以得到我想要的结果。但是当我使用EXEC@Sql这样做时,会出现错误 有什么建议吗?尝试将最后一行更改为EXEC(@sql) 资料来源: 尝试将最后一行更改为EXEC(@sql) 资料来源: 试试看 将@sql声明为nvarchar(最大值) 然后 而不是 exec @sql 使用just exec执行动态s

我得到一个奇怪的例外,说“ "

我正在执行以下查询。 "

{

}

我无法理解到底是什么问题?在像我这样执行动态Sql时,我们是否有一些字符限制。我尝试打印@Sql中得到的内容,我可以得到我想要的结果。但是当我使用EXEC@Sql这样做时,会出现错误


有什么建议吗?

尝试将最后一行更改为
EXEC(@sql)

资料来源:


尝试将最后一行更改为
EXEC(@sql)

资料来源:

试试看 将@sql声明为nvarchar(最大值) 然后

而不是

exec @sql
使用just exec执行动态sql非常有限。请参阅此链接。

试试看 将@sql声明为nvarchar(最大值) 然后

而不是

exec @sql
使用just exec执行动态sql非常有限。请参阅此链接。

您可以使用:

  • 执行或执行:
    exec(@sql)

  • 系统存储过程
    sp_execute
    。优点:可以在语法中使用其他参数,并在执行之前验证数据类型:
    execute sp_execute@sql

  • 您可以使用:

  • 执行或执行:
    exec(@sql)

  • 系统存储过程
    sp_execute
    。优点:可以在语法中使用其他参数,并在执行之前验证数据类型:
    execute sp_execute@sql


  • EXEC@Sql和EXEC(@Sql)之间有什么区别?请告诉我哪一个更好?为什么?@Raj Jayaswal:没有括号,
    @Sql
    被认为包含您要执行的存储过程的名称。EXEC@Sql和EXEC(@Sql)之间有什么区别。请告诉我哪一个更好以及为什么?@Raj Jayaswal:没有括号,
    @Sql
    被认为包含了您打算执行的存储过程的名称。您是否考虑过选择答案?5个问题,0个学分。人们在这里免费工作,只获得积分作为付款。至少您可以这样做你有没有考虑过选择一个答案?5个问题,0个学分。人们在这里免费工作,只获得积分作为报酬。你至少可以在应该获得学分的地方给予学分
    Execute a character string
    { EXEC | EXECUTE } 
        ( { @string_variable | [ N ]'tsql_string' } [ + ...n ] )
        [ AS { LOGIN | USER } = ' name ' ]
    [;]
    
    exec sp_executesql @sql
    
    exec @sql