Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

doesn't quotename work inside of exec?

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...

like image 986
simon Avatar asked Sep 15 '25 16:09

simon


2 Answers

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 + '''');
like image 153
p.campbell Avatar answered Sep 18 '25 06:09

p.campbell


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.

like image 38
Shannon Severance Avatar answered Sep 18 '25 07:09

Shannon Severance



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!