sql server - SQL add a variable to a query -
how create variables specified once , used in queries later in script? these variables may used multiple times in query, , in multiple queries in script. use @x such variable in examples below.
what want like:
declare @query nvarchar(1000) declare @x nvarchar(40)  set @x = 'test' set @query = 'select [name]                      , ' + @x + ' [testcase]               mytable'  exec (@query)  -- returns "invalid column name 'test'"   which returns error mentioned above. achieve equivalent of:
declare @query nvarchar(1000) declare @x nvarchar(40)  set @x = 'test' set @query = 'select [name]                      , ''test'' [testcase]               mytable'  exec (@query)  -- returns e.g. -- name   testcase -- alice  test -- bob    test   i note following doesn't work , returns same error first:
declare @query nvarchar(1000) declare @x nvarchar(40)  set @x = 'test' set @query = 'select [name]                      , ' + 'test' + ' [testcase]               mytable'  exec (@query)  -- returns "invalid column name 'test'"   based on error , since i'm not trying use @x column name, variable, assume i'm using invalid implementation of variable.
since you're not trying use variable column name, not need use dynamic sql @ all. (which thing(tm) since dynamic sql should used great deal of caution due being great attack surface.)
a simple:
declare @x nvarchar(40)  set @x = 'test'  select [name], @x testcase mytable   will do.
that being said, if have use case dynamic sql (again particular query in question here not perhaps ad-hoc query being passed in procedure), thing pass variable parameter query via sp_executesql. akin creating stored procedure parameters:
declare @x nvarchar(40) declare @query nvarchar(1000)  set @x = 'test'  set @query = 'select [name], @x testcase mytable'  exec sp_executesql @query, n'@x nvarchar(1000)', @x      
Comments
Post a Comment