我正在尝试做类似于this question的事情。答案建议在exec中使用引号。
与此类似:
declare @var nvarchar(128)
set @var = 'hello world'
exec('print ''' + quotename(@var) + '''')
但这不起作用('quotename'附近的语法不正确)。答案错了吗?
我知道我可以先生成字符串,将其放在变量中,然后将其与exec sp_executeSql
一起使用,但我宁愿按照问题的方式进行,如果它可以工作......
答案 0 :(得分:2)
我能为您提出的最佳解决方案是预先引用价值:
declare @var nvarchar(128);
set @var = 'hello world';
declare @quoted varchar(100);
select @quoted = quotename(@var);
exec('print ''' + @quoted + '''');
答案 1 :(得分:2)
Execute a character string
{ EXEC | EXECUTE }
( { @string_variable | [ N ]'tsql_string' } [ + ...n ] )
[ AS { LOGIN | USER } ='name' ]
[;]
语法规范仅允许在这种情况下使用字符串变量和字符串文字。没有意义,但这里不允许调用返回字符串的函数。