declare @sum as nvarchar(20) = 'sum(Salary)'
select @sum from Employee
このようなことをしたいと思います。私は変数に自分のSQLクエリ部分を格納し、SQLクエリでその変数を使用する必要があります。それはどんな方法でも可能ですか?SQL Serverでこれを行うことはできますか?
declare @sum as nvarchar(20) = 'sum(Salary)'
select @sum from Employee
このようなことをしたいと思います。私は変数に自分のSQLクエリ部分を格納し、SQLクエリでその変数を使用する必要があります。それはどんな方法でも可能ですか?SQL Serverでこれを行うことはできますか?
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/
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]を見てすることがありますあなたの関数
これは決してOP質問に答えません。 – Arvo
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
から結果を返す必要がありますhttps://www.mssqltips.com/sqlservertip/1160/execute-dynamic-sql -commands-in-sql-server /) – kman
'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 –
@ Nick.McDermaid私はその悪い考えを言っていません...あなたのベルトの中のただ一つのツールであり、多くの機会にその日を救っています。 –