Одним из вариантов будет использование условного выражения на основе идентификатора и размещение кода для конкретной таблицы в каждом разделе таблицы.
Я предпочитаю, чтобы этот метод уходил от динамического sql и позволил серверу баз данных получить реальный шанс оптимизировать его по соображениям скорости путем предварительной компиляции.
ПРИМЕЧАНИЕ: серверы баз данных в целом плохо работают со строками (создают динамические sql).
РЕДАКТИРОВАТЬ1: ПРИМЕР
ДЛЯ ИНСТАНЦИИ: ЭТОТ SQL
declare @mytest varchar(5)
set @mytest = 'PROCS'
IF @mytest = 'PROCS'
BEGIN /* STORED PROCS */
SELECT DISTINCT
o.name AS ObjectName_StoredProcedure
FROM sysobjects as o
WHERE o.xtype = 'P'
END
ELSE
IF @mytest = 'DEFAULT'
BEGIN
SELECT DISTINCT
o.name AS ObjectName_StoredProcedure
FROM sysobjects as o
WHERE o.xtype = 'D'
END
дает вам имена процедур хранилища или ограничения по умолчанию в зависимости от того, что вы передаете параметру.
РЕДАКТИРОВАТЬ 2: На основе кода операции:
CREATE PROCEDURE [dbo].[spGetData]
(@tableID int )
AS
BEGIN
SET NOCOUNT ON;
IF @tableID = 1
BEGIN
SELECT SMSRequestId AS 'Request',
WorkOrder, PartNumber, Qty, EmployeeID
FROM SMRequest
END
IF @tableID = 2
BEGIN
SELECT WHRequestID AS 'Request',
WorkOrder, PartNumber, Qty, EmployeeID
FROM WHRequest
END
END