2016-05-20 12 views
1

私はSQLクエリを格納するテーブルを持っています。私はそれを読んで、EXECUTE sp_executesqlを使って実行しています。私はこの質問を修正したいのですが、どうすればいいのでしょうか?SQL Serverで動的クエリを変更する方法は?

DECLARE @sql1 NVARCHAR(MAX), @var NVARCHAR(20) 

SET @sql1 = (SELECT Query FROM Table WHERE ID = 123) 
SET @var = ' AND CONDITION2' 

PRINT @sql1 + @var 

結果:

UPDATE Table SET VALUE1 WHERE CONDITION1 AND CONDITION2 

しかし、私は、間に何かを追加したい場合は、私は」私が最後に変数を追加する必要がある場合

することは、私はこのような何かを行うことができますどのようにそれを行うか分からない。

問合せ:

DECLARE @sql NVARCHAR(MAX) 
SET @sql = (SELECT Query FROM Table WHERE ID = 123) 
PRINT @sql 

実際の結果:予想

UPDATE Table SET VALUE1 WHERE CONDITION1 

UPDATE TOP (100) Table SET VALUE1 WHERE CONDITION1 
+0

を削除することができます。あなたが何をしようとしているのかわからないからです。まず、テーブル定義とサンプルデータから始めます。次に、あなたがしようとしていることを含める。 –

答えて

3

ただ、プレースホルダ

SET @sql = 'UPDATE {0} Table SET VALUE1 WHERE CONDITION1'; 
SET @top_condition = 'TOP(100)'; 
SET @sql = REPLACE(@sql, 
        '{0}', 
        CONVERT(varchar(max), @top_condition) 
        ); 
が含まれるようにあなたの元のクエリを変更します

また、誰もがいずれかのこれを行う方法を知っているいくつかの実際の詳細がなくて一番上のオプションあなたがそれをしたい場合は

SET @top_condition = ''; 
+0

これはまさに私が欲しかったものです。 – CSharper

関連する問題