Я имею не так тяжелая проблема для Экспертного знания SQL Server. Хотя у меня есть другая альтернатива, но я хочу знать, что это может решенный Оператор выбора использования в SQL Server 2005.
У меня есть различные таблицы категории с теми же столбцами. То, в чем я нуждаюсь, должно назвать оператор SELECT на основе категории. Ниже код, что я пытаюсь сделать
ALTER PROCEDURE [dbo].[Sgi_DropDownListItemsLoadByTblName]
@Category int
AS
BEGIN
SET NOCOUNT ON;
CASE
when @Category = 1 Then Select [ID],[OptionText],[Description] From dbo.Sgi_ListItems_Denomination
when @Category = 2 Then Select [ID],[OptionText],[Description] From dbo.Sgi_ListItems_Drink
when @Category = 3 Then Select [ID],[OptionText],[Description] From dbo.Sgi_ListItems_Education
when @Category = 4 Then Select [ID],[OptionText],[Description] From dbo.Sgi_ListItems_Ethnicity
when @Category = 5 Then Select [ID],[OptionText],[Description] From dbo.Sgi_ListItems_Kids
when @Category = 6 Then Select [ID],[OptionText],[Description] From dbo.Sgi_ListItems_Religion
when @Category = 7 Then Select [ID],[OptionText],[Description] From dbo.Sgi_ListItems_Smoking
end
END
Когда я пытаюсь создать этот SP, ошибка сгенерирована на Операторе выбора
Я знаю, что это может быть сделано с помощью просто оператора IF, но я стремлюсь знать, как он может быть сделан с помощью Оператора выбора.
Может кто-либо помогать мне.
Спасибо за совместное использование Вашего времени.
Ну, вы можете использовать динамический sql, но я не думаю, что то, что вы ищете, возможно в написанном виде. Однако, кто-то может меня удивить. Смотрите ниже быструю и грязную версию.
DECLARE @Statement varchar(max)
SET @Statement = 'Select [ID],[OptionText],[Description] From '
DECLARE @Category int
SET @Category = 5
SELECT @Statement = @Statement +
CASE
when @Category = 1 Then 'dbo.Sgi_ListItems_Denomination'
when @Category = 2 Then 'dbo.Sgi_ListItems_Drink'
when @Category = 3 Then 'dbo.Sgi_ListItems_Education'
when @Category = 4 Then 'dbo.Sgi_ListItems_Ethnicity'
when @Category = 5 Then 'dbo.Sgi_ListItems_Kids'
when @Category = 6 Then 'dbo.Sgi_ListItems_Religion'
when @Category = 7 Then 'dbo.Sgi_ListItems_Smoking'
end
EXEC(@Statement)