Гнездо динамического случая, когда заявления в SQL 2008 - PullRequest
0 голосов
/ 25 октября 2010

У меня есть следующий код в .net.

foreach (string key in EntityNumbers.Keys)
{

                    if (EntityNumbers[key] != null)
                    {
                        e = new WebServices.Entity();
                        e.HierarchyLevel = key;
                        e.Number = EntityNumbers[key];
                        entities.Add(e);
                    }
                }

Это должно быть преобразовано в SQL в следующем формате.

declare @HierarchyLevelValue int, @HierarchyLevel nvarchar;

SELECT * from table where 
CASE 
    WHEN @HierarchyLevel='COMPANY' THEN COMPANYNUMBER
    WHEN @HierarchyLevel='BRANCH' THEN BRANCHNUMBER
    WHEN @HierarchyLevel='BUSINESS' THEN BUSINESSNUMBER
END =@HierarchyLevelValue

Приведенный выше код будет работать для одной сущности, но как мне получить несколько, как

    SELECT * from table where COMPANYNUMBER=100 AND BRANCHNUMBER= 1
 AND BUSINESSNUMBER= 1

Я могу сформировать окончательный запрос в виде строки и выполнить через ExecuteSQL. Есть ли способ, который позволит избежать формирования строки?

Заранее спасибо.

1 Ответ

0 голосов
/ 25 октября 2010

Я думаю, вам лучше использовать динамический sql.http://www.kodyaz.com/articles/tsql-sp_executesql-with-output-parameters.aspx

Остерегайтесь опасностей динамического sql.

...