I'm trying to do something similar to this question. The answer recommends using quotename inside of an exec.
Similar to this:
declare @var nvarchar(128)
set @var = 'hello world'
exec('print ''' + quotename(@var) + '''')
But this doesn't work (Incorrect syntax near 'quotename'). Is the answer wrong?
I know I can generate the string first, put it in a variable then use it with exec sp_executeSql
, but I would rather do it the way in the question if it can work...
Best solution I could come up with for you is to pre-quote the value:
declare @var nvarchar(128);
set @var = 'hello world';
declare @quoted varchar(100);
select @quoted = quotename(@var);
exec('print ''' + @quoted + '''');
From the Transact-SQL Reference:
Execute a character string
{ EXEC | EXECUTE }
( { @string_variable | [ N ]'tsql_string' } [ + ...n ] )
[ AS { LOGIN | USER } ='name' ]
[;]
The syntax specification only allows string variables and string literals in this situation. Doesn't make sense, but calling functions returning strings is not allowed here.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With