我们希望动态地将变量传递给sp_helptext,但是因为sp_helptext接受传入冒号的变量;这导致错误。 我的查询如下:
EXEC sp_helptext N'DatabaseName.dbo.SpName'; --- this works
DECLARE @spName VARCHAR(120) = 'spName'
EXEC sp_helptext N'DatabaseName.dbo.'+@spName+''
错误:
Msg 102, Level 15, State 1, Line 53
Incorrect syntax near '+'.
答案 0 :(得分:3)
问题是参数不支持字符串操作。
这很容易修复。只需在调用之前执行字符串操作:
DECLARE @spName VARCHAR(120) = 'spName';
DECLARE @fullName NVARCHAR(MAX) = N'DatabaseName.dbo.' + @spName;
EXEC sp_helptext @fullName;
这是为了演示。如果您实际传递了这些值,那么您应该使用QUOTENAME()。