2012-04-02 26 views
2

動的に以下のクエリを書く方法は?SQL Server 2008でクエリを動的に記述する方法は?

empid  designation  interestes 
1   developer,tester  cricket,chess 
1   developer    chess 
1   techlead    cricket 

条件:指定が2以上のものを送信する必要がある場合は、動的に上記のクエリを記述し、interstesにも同じ方法

IF empid = 1 
AND (designation LIKE '%developer%' OR designationLIKE '%techlead%') 
OR (interests LIKE '%cricket%'). 

。あなたが持っている場合(実際には外部キーのリストである必要があり、あなたのフォームが送信されるときに、名称の文字列を作成し

ALTER PROCEDURE [dbo].[usp_GetDevices] 
    @id INT, 
    @designation NVARCHAR (MAX) 
AS 
BEGIN 
    declare @idsplat varchar(MAX) 
    set @idsplat = @UserIds 
     create table #u1 (id1 varchar(MAX)) 
     set @idsplat = 'insert #u1 select ' + replace(@idsplat, ',', ' union select ') 
     exec(@idsplat) 
     Select 
     id FROM dbo.DevicesList WHERE [email protected] AND designation IN (select id1 from #u1) 
     END 
+0

質問をより明確にしてください。動的SQLを記述しますか? – Terry

+0

UI.usersのチェックボックスのようなすべての指定を、developer、tester、projectlead、techleadのように動的にquery.Howのように指定して、DBから関連レコードを取得する方法を選択します。 – user1237131

+0

http://stackoverflow.com /質問/ 9970877/how-to-dynamic-write-the-query-in-sql-server-2008 – user2490832

答えて

0

...

EDITストアドプロシージャのコードを教えてください1対多の関係)、それをSQLに渡します。そして、多くのopen-source SQL user functionsのいずれかを使用してテーブルにそれを解析:

-- @designations = 'developer,tester,techlead' 

select text_val 
from dbo.fn_ParseText2Table(@designations,',') 

/* results: 

text_val 
-------- 
developer 
tester 
techlead 

*/ 

あなたは、テーブル内の値を持っていたら、あなたは任意の標準参加したり、クエリの操作を行うことができます。

+0

こんにちは@Terry Thanks.But私はid = 1と指定= "を送信する場合、すべての開発者レコードを取得するのと同じように使用しますが、id = 1、designation = "'%developer%'、 '%'のような複数のパラメータを送信することができません。 =、!=、<, <= , >、> =、またはサブクエリが式として使用されている場合は、これは許可されません "#:。私のSPをチェックしてください... – user1237131

関連する問題