Расширение хранимой процедуры (добавление к ней одной части) с помощью параметра в SQL Server - PullRequest
0 голосов
/ 16 ноября 2009

У меня есть хранимая процедура длиной 200 строк, которая получает параметр 'prmtr',

Что я хочу сделать, это добавить «sql part» в мою хранимую процедуру в соответствии с моим параметром.

пример:

SELECT A.* FROM
(
SELECT * FROM table1
) A

IF (my parameter) = a

LEFT JOIN
(
SELECT * FROM table2
) B
ON A.ID= B.ID

Ответы [ 2 ]

2 голосов
/ 16 ноября 2009

Вы можете сделать это так

SELECT  A.* 
FROM    (
            SELECT  * 
            FROM    table1
        ) A LEFT JOIN 
        (
            SELECT  * 
            FROM    table2
        ) B ON  @prmt = 'A'
            AND A.ID= B.ID
1 голос
/ 16 ноября 2009

Вы не можете изменить запрос таким образом, поэтому у вас есть два варианта:

  • имеет два отдельных запроса в SPROC (по одному для каждой ветви) - хорошо для двух, но не очень хорошо масштабируется до более сложных комбинаций
  • использовать динамический SQL; создать запрос в varchar(4000) и использовать sp_ExecuteSQL для его вызова; вполне очевидно, что вы можете изменить строку , чтобы включить дополнительные 'LEFT JOIN ...' и т. д.

Однако все это говорит о том, что я обычно предпочитаю, чтобы один SPROC всегда возвращал одну и ту же схему - он полностью мешает большинству инструментов ORM, если вы изменяете столбцы на основе параметров. На что посмотреть ...

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