2016-10-10 3 views
-1

私は、このSQL文を持っているとエラーエラー156 TSQLにsp_executesqlを

Execute sp_executesql 
N' UPDATE tblFI01_Auftraege 
SET @WerteListe 
WHERE Auftrag_id = @Auftrag_ID' 
,N'@WerteListe varchar(max), @Auftrag_ID int' 
,@WerteListe= N'Datum_geaendert = GetDate()', @Auftrag_ID = 12; 
を見つけることができません

エラーは言う:キーワード は、私が説明読んだWHERE近く

間違った構文sp_executesqlのは、エラーを見つけることができません。

助けが必要ですか?

+1

を実行する前に、あなたはそれを調べることができるように、変数に動的なクエリを形成しています。 –

+0

_optimisticプログラミングのもう1つのケース。 SQL Serverは、単純に値として扱うのではなく、変数の値を文の一部として解釈させることがあります。動的SQLを使用すると、[Bobby Tables](http://bobby-tables.com/)を満たす機会が得られることに注意してください。 – HABO

答えて

0

SET句では、column = valueを指定する必要があります。その場合は、@WerteListeという値を持つだけで、tblFI01_Auftraege = @WerteListeの列が必要です。 TSQL Update syntax

+0

私は説明を理解したので、変数@WerteListeは "Datum_geander = GetDate()"に置き換えてください。 したがって、UPDATE-Statementは有効である必要がありますか? – henry

+0

説明を再読み込みしてください。 多分、私は英語を理解することを学ぶべきです.... あなたの助けをありがとう – henry

0

最高のはあなたがそのようなテーブルやカラムの名前をparameteriseすることはできません

select @WerteListe= N'Datum_geaendert = GetDate()' 

select @sql = N' UPDATE tblFI01_Auftraege 
SET ' + @WerteListe + ' 
WHERE Auftrag_id = @Auftrag_ID' 

print @sql -- print out for your verification 

Execute sp_executesql 
      @sql 
      , N'Auftrag_ID int' 
      , @Auftrag_ID = 12; 
+0

こんにちは、 あなたの助けをありがとう。 私は説明を誤解しました。 あなたのコードでは完璧に機能しました! – henry