Joe*_*oel 1 sql t-sql sql-server
declare @test varchar(20)
set @test = 'VALUE'
exec('
select '+@test+'
')
Run Code Online (Sandbox Code Playgroud)
返回:
列名称"VALUE"无效.
是否有另一种方法可以在select语句中显示变量值?
干净的替代方法是使用sp_executesql()及其处理参数化语句的能力:
DECLARE @test VARCHAR(20)
DECLARE @stmt NVARCHAR(100)
DECLARE @parm NVARCHAR(100)
SET @stmt = N'SELECT @val' /* statement definition */
SET @parm = N'@val VARCHAR(20)' /* parameters definition */
SET @test = 'VALUE'
EXECUTE sp_executesql @stmt, @parm, @val = @test
Run Code Online (Sandbox Code Playgroud)
产量:
(no column name)
VALUE
Run Code Online (Sandbox Code Playgroud)