2017-04-11 17 views
0
declare @sum as nvarchar(20) = 'sum(Salary)' 

select @sum from Employee 

このようなことをしたいと思います。私は変数に自分のSQLクエリ部分を格納し、SQLクエリでその変数を使用する必要があります。それはどんな方法でも可能ですか?SQL Serverでこれを行うことはできますか?

+1

から結果を返す必要がありますhttps://www.mssqltips.com/sqlservertip/1160/execute-dynamic-sql -commands-in-sql-server /) – kman

+1

'EXEC'または' sp_execute_sql'を使うことができます。それは動的SQLと呼ばれます。通常は悪い考えです。 https://docs.microsoft.com/en-us/sql/t-sql/language-elements/execute-transact-sql http://stackoverflow.com/questions/548090/dynamic-sql-execsql-versus-exec -sp-runsqlsql –

+0

@ Nick.McDermaid私はその悪い考えを言っていません...あなたのベルトの中のただ一つのツールであり、多くの機会にその日を救っています。 –

答えて

1

SQL Serverはマクロ置換をサポートしていません。ただし、動的SQLが可能です。以下は簡単な例です

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

Declare @SQL varchar(max) = 'select '[email protected]+' from Employee' 
Exec(@SQL) 

ここでは、SQLインジェクションのリスクがあります。 http://bobby-tables.com/

-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 

それは(あなたは、[動的SQL]を見てすることがありますあなたの関数

+0

これは決してOP質問に答えません。 – Arvo

0
YOU CAN USE DYNAMIC QUERY 

    BEGIN TRAN 

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

    ROLLBACK TRAN 
関連する問題