Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Динамическая подстановка условия Where  [new]
Gena928
Member

Откуда: Москва
Сообщений: 1131
Access 2003 + sql 2005

Добрый день,
написал небольшой Select для получения списка значений:
DECLARE @MODEL_NAMES VARCHAR(2000)		
SET @MODEL_NAMES = ''

SELECT @MODEL_NAMES = @MODEL_NAMES + ', [' +  DESCRIPTION_C + ']'
 FROM  [SWP].[dbo].[vw_IMAM_current_stock]
 GROUP BY DESCRIPTION_C
 ORDER BY DESCRIPTION_C

SET @MODEL_NAMES = SUBSTRING(@MODEL_NAMES, 3, len(@MODEL_NAMES))
PRINT @MODEL_NAMES 

Работает хорошо, но я хочу добавить сюда динамическое условие Where и передавать его как параметр процедуры:
ALTER PROCEDURE [dbo].[proc_REPORTS_get_summary_table_for_report] 
	@CONDITION_MAIN nvarchar(400) = ''
AS
SET NOCOUNT ON;



--Пример входного параметра:
--@CONDITION_MAIN = WHERE (SUPPLIER_CD_C = N'SMC') AND (PORD_MNTH_C < 200901) AND (PORT_CD_C = N'Hanko')

DECLARE @MODEL_NAMES VARCHAR(2000)		
SET @MODEL_NAMES = ''

SELECT @MODEL_NAMES = @MODEL_NAMES + ', [' +  DESCRIPTION_C + ']'
 FROM  [SWP].[dbo].[vw_IMAM_current_stock]
 GROUP BY DESCRIPTION_C
 ORDER BY DESCRIPTION_C

SET @MODEL_NAMES = SUBSTRING(@MODEL_NAMES, 3, len(@MODEL_NAMES))
PRINT @MODEL_NAMES 



Просто это условие гораздо легче формировать в коде VBA, чем в процедуре, поэтому я пытаюсь передать его как параметр. Нифига не получается. Подскажите пожалуйста как быть?
17 сен 09, 16:25    [7674540]     Ответить | Цитировать Сообщить модератору
 Re: Динамическая подстановка условия Where  [new]
Gena928
Member

Откуда: Москва
Сообщений: 1131
Может я не совсем корректно выразился: я хочу подставить это условие в сам Select. Чтобы выборка была с этим условием.
17 сен 09, 16:28    [7674567]     Ответить | Цитировать Сообщить модератору
 Re: Динамическая подстановка условия Where  [new]
programmator
Member

Откуда: ru
Сообщений: 355
='WHERE (SUPPLIER_CD_C = N''SMC'') AND (PORD_MNTH_C < 200901) AND (PORT_CD_C = N''Hanko'')'
17 сен 09, 16:29    [7674585]     Ответить | Цитировать Сообщить модератору
 Re: Динамическая подстановка условия Where  [new]
programmator
Member

Откуда: ru
Сообщений: 355
тогда заварачивайте все в динамический код
17 сен 09, 16:31    [7674595]     Ответить | Цитировать Сообщить модератору
 Re: Динамическая подстановка условия Where  [new]
Gena928
Member

Откуда: Москва
Сообщений: 1131
programmator
='WHERE (SUPPLIER_CD_C = N''SMC'') AND (PORD_MNTH_C < 200901) AND (PORT_CD_C = N''Hanko'')'


не, не получится.
там еще меняется само количество условий.

Например может быть так:
WHERE (SUPPLIER_CD_C = N'SMC')

или так:
(SUPPLIER_CD_C = N'MSC') AND (PORD_MNTH_C > 200812)

или по другому...
Поэтому я и передаю полную строчку WHERE как параметр.
17 сен 09, 16:33    [7674625]     Ответить | Цитировать Сообщить модератору
 Re: Динамическая подстановка условия Where  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
связка полей в этом вашем WHERE предполагается только по AND?
17 сен 09, 16:35    [7674636]     Ответить | Цитировать Сообщить модератору
 Re: Динамическая подстановка условия Where  [new]
Konst_One
Member

Откуда:
Сообщений: 11514
ну так динамический sql , вам же уже сказали
17 сен 09, 16:35    [7674641]     Ответить | Цитировать Сообщить модератору
 Re: Динамическая подстановка условия Where  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Возможно, автору просто еще не довелось прочесть статью Переменное число критериев отбора в запросе
17 сен 09, 16:37    [7674667]     Ответить | Цитировать Сообщить модератору
 Re: Динамическая подстановка условия Where  [new]
Gena928
Member

Откуда: Москва
Сообщений: 1131
Дедушка
связка полей в этом вашем WHERE предполагается только по AND?


да, только по ним.
17 сен 09, 16:39    [7674688]     Ответить | Цитировать Сообщить модератору
 Re: Динамическая подстановка условия Where  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
Gena928
Дедушка
связка полей в этом вашем WHERE предполагается только по AND?


да, только по ним.

тогда вот чуть выше :) Паганель привёл вам ссылку.
17 сен 09, 16:41    [7674711]     Ответить | Цитировать Сообщить модератору
 Re: Динамическая подстановка условия Where  [new]
Gena928
Member

Откуда: Москва
Сообщений: 1131
Дедушка
Gena928
Дедушка
связка полей в этом вашем WHERE предполагается только по AND?


да, только по ним.

тогда вот чуть выше :) Паганель привёл вам ссылку.


Да, спасибо, думаю это то, что надо.
17 сен 09, 16:49    [7674785]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить