Создать представление с изменением имен таблиц - PullRequest
0 голосов
/ 12 сентября 2018

У нас есть набор таблиц с суффиксом дня недели (Table_Mon, Table_Tue и т. Д.). Я пытаюсь придумать дизайн, в котором приложение может извлекать ограниченный набор данных из этих столбцов, независимо от того, какой сегодня день. Я смотрел на использование динамического SQL в представлении, но это не вариант. Каково правильное решение, чтобы приложение могло запрашивать таблицы, не указывая день недели?

1 Ответ

0 голосов
/ 12 сентября 2018

Это плохо спроектированная схема базы данных.В идеале должна быть только одна таблица со столбцом Week_Day, и вы должны иметь возможность запросить эту таблицу, просто добавив соответствующее предложение WHERE.

В любом случае вам нужно будет использовать динамический sql, но вместо представления вы должны использовать хранимую процедуру.Что-то вроде ...

CREATE PROCEDURE dbo.Get_Data
AS
BEGIN 
   SET NOCOUNT ON;

    DECLARE  @Sql       NVARCHAR(MAX)
            ,@TableName SYSNAME; 

    SET @TableName = N'TABLE_' + LEFT(DATENAME(WEEKDAY, GETDATE()) , 3);

    SET @Sql = N' SELECT * FROM ' + QUOTENAME(@TableName)

    Exec sp_executesql @Sql

END
...