SQL Server 2008 получает данные из унифицированных таблиц - PullRequest
1 голос
/ 12 декабря 2011

У меня есть сохраненный процесс, например:

CREATE PROCEDURE [dbo].[GetData]
    @code varchar(10)
AS
BEGIN
    SET NOCOUNT ON;

    --code goes here
END

процесс считывает данные из одной из n таблиц, основываясь на переданном @code.Итак, у меня есть карта, связывающая коды с реальными именами таблиц, напр.

Code:"A" => dbo.JAN_SALES   
Code:"B"=> dbo.FEB_SALES

Все таблицы имеют одинаковую структуру.Я знаю, как это сделать с помощью «красного» SQL. Интересно, есть ли более элегантный / производительный способ сделать это с SQL Server 2008?

Редактировать 1 - Красный SQL - это SQL, который создается путем объединенияего части и выполняются путем вызова чего-то вроде exec ('выберите A. B, C из' + @myTable).

1 Ответ

0 голосов
/ 28 марта 2012

Ваш вопрос, кажется, ясен относительно того, что необходимо сделать, и нет гораздо больше возможностей, чем создание кода T-SQL с помощью
1) добавление блоков IF, оценивающих параметр @code; или
2) используя Dynamic Sql (динамический sql = "красный"). Обратите внимание, что динамический SQL настоятельно не рекомендуется для производственных сред.

BTW - В SQL Server 2008 вы можете использовать * sp_executesql * запатентованную хранимую процедуру. MSDN от Microsoft описывает, как это работает здесь .

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