2011-10-25 27 views
-1

文字列を追加する方法And節。私もしたくないSQL Serverで文字列をクエリに変換する方法

 
Declare @WhereQuery varchar(max) 

SET @WhereQuery='class=''BCA'' and RollNo=10 AND ID IN (SELECT ID FROM StudentMaster WHERE MARKS > 50)' 

SELECT * into #TempTable1 
from StudentMaster 
where @WhereQuery 

実行するように実行するか、exec関数を使用する - :私たちはこの文字列をクエリとして扱われます照会し、すべての条件を満たし、その文字列を適用するときには
私のようなクエリが持っていますこのクエリ。 上記のようにクエリの言葉で文字列を追加しますが、これは正しく動作しません。 where句の後に追加した変数は文字列として扱われますが、この文字列をQueryとして扱いたいとします。助けてください。また、このクエリーを実行するためにexecute関数またはexec関数を使用したくありません。

+1

あなたは、動的SQLを選択するが、その後、「EXECない」と言っては 'EXEC' – leppie

+3

-1を使用する必要があります。 – gbn

答えて

1

以下のアプローチは問題なく動作します。ユーザーが入力を提供してもSQLインジェクションが発生する可能性があるため、特に注意してください。あなたは、動的SQLを実行するためにををしたい場合は

create table #TempTable1 (.....) 

Declare @selectQuery varchar(max) 
set @selectQuery = 'SELECT * into #TempTable1 from StudentMaster ' 

Declare @WhereQuery varchar(max) 

SET @WhereQuery='where class=''BCA'' and RollNo=10 AND ID IN (SELECT ID FROM StudentMaster WHERE MARKS > 50)' 

exec (@selectQuery + @WhereQuery) 
+0

私はこのクエリを実行するためにexecuteまたはexec関数を使いたくありません。 –

+0

その場合は、Java/.Netでクエリを構築し、それを準備して使用してください。 –

0

あなたはEXECを使用するまたはsp_exeutesqlを持って

あなたはは非動的クエリを記述そしてEXECを使用しない場合:

SELECT * into #TempTable1 
from StudentMaster 
where class='BCA' and RollNo=10 AND ID IN (SELECT ID FROM StudentMaster WHERE MARKS > 50) 
関連する問題