2017-08-22 17 views
0

SQLで文字列クエリを使用し、Executeメソッドで実行しています。デフォルトの値を持つ列を追加する必要があります。そのデフォルト値は変数に含まれています。私は、クエリ文字列内の既定値の列を追加し、それを実行すると、 "無効な列名 'dafaultValue'"というエラーが発生します。 これを行うには他に解決策がありますか?変数を使用してSQL文字列クエリでカスタム列を追加する方法

set  @variableQuery = 'select '+ ''''[email protected]+'''' +' as dest ,* from myTable'; 

そうでなければ、それはそれは表の列名、それがにISNであると考えた:

Declare @variable Varchar(Max); 
Declare @variableQuery Varchar(Max); 
set @variable = 'Test'; 
set @variableQuery = 'select '[email protected]+' as dest ,* from myTable '; 

execute (@variableQuery); 

答えて

0

あなたの問題はあなたが単一引用符で変数を含める必要があるということです: はここに私のコードですしたがって、誤差。

+0

ありがとうございます@レオニダス。出来た。あなたは私の時間を救った。どうもありがとう。 –

+0

ダイナミックSQLを使用する場合は、EXECUTEをPRINTに置き換えて、何が起きているのかを確認し、コピーして実行して、エラーを少しはっきりと見られるようにしてください。 – Leonidas199x

+0

実際に私はそれをしました。しかし私はそれを印刷で見た後であっても、私は解決策を見つけられませんでしたので、私はそれがいくつかの構文エラーがあることを得たが、初めて使用していた。 –

0

sp_executesqlを使用してパラメータを渡すことを強くお勧めします。これは、クエリ文字列をいじるよりもはるかに安全です:クエリ処理のために、それはexecよりも強力ですので

Declare @variable Varchar(Max); 
Declare @variableQuery Varchar(Max); 
set @variable = 'Test'; 

set @variableQuery = 'select @variable as dest, t.* from myTable t'; 

exec sp_executesql @variableQuery, 
        N'@variable varchar(max)', 
        @variable = @variable; 

この方法でも、あなたは、バッククエリから値を渡すことができます。

クエリ変数は、できるだけ一般的なものになるように、しばしばnvarchar()と宣言されます。

+0

@variableQueryはnvarcharである必要があります – sepupic

関連する問題