我可以在SQL Server中执行类似的操作吗?

时间:2017-04-11 02:16:36

标签: sql-server

declare @sum as nvarchar(20) = 'sum(Salary)'

select @sum from Employee

我想做这样的事情。我需要将我的sql查询部分存储在变量中,并在sql查询中使用该变量。有可能吗?

3 个答案:

答案 0 :(得分:1)

SQL Server不支持宏替换。但它确实允许DYNAMIC SQL。下面是一个简单的例子

declare @sum as nvarchar(20) = 'sum(Salary)'

Declare @SQL varchar(max) = 'select '+@Sum+' from Employee'
Exec(@SQL)

现在,要明确的是,SQL注入存在风险。看一看http://bobby-tables.com/

答案 1 :(得分:0)

YOU CAN USE DYNAMIC QUERY

    BEGIN TRAN

    DECLARE @sum NVARCHAR(20) = 'sum(Salary)',@SQL VARCHAR(4000)
    SET @SQL=''
    SET @SQL = @SQL + 'SELECT '+@Sum+' FROM Employee'
    PRINT @SQL
    EXEC(@SQL)

    ROLLBACK TRAN

答案 2 :(得分:-1)

id'总和(工资)'就像那样它应该返回

的结果
declare @sum as nvarchar(20) = 'sum(Salary)'

产生一个文字字符串

  

和(工资)

但如果喜欢:

declare @sum as nvarchar(20)
 select @sum = sum(Salary),column1,..and so on from your table

然后它应该从你的函数返回一个结果