Как динамически написать запрос в SQL Server 2008? - PullRequest
2 голосов
/ 02 апреля 2012

Как написать динамически приведенный ниже запрос?

Таблица

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

Условие:

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

Как написать вышеупомянутый запрос динамически, если обозначения должны отправлять более 2, а также то же самое на межгосударственных.

пожалуйста, скажите мне ...

РЕДАКТИРОВАТЬ код хранимой процедуры:

 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 id=@id  AND designation IN (select id1 from #u1)
      END

1 Ответ

0 голосов
/ 02 апреля 2012

Затем, когда ваша форма отправлена, создайте строку обозначений (в действительности это должен быть список внешних ключей, если у вас есть отношение 1 ко многим) и передайте ее в SQL.Затем разберите его в таблицу, используя одну из многих пользовательских функций SQL с открытым исходным кодом :

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

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

/* results:

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

*/

Получив значения в таблице, вы сможете выполнять любые стандартные операции соединения или запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...