Имя динамической таблицы в зависимости от типа - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть три разных типа 1, 2, 3.

тип 1 связан с таблицей А тип 2 связан с таблицей B тип 3 связан с таблицей C

Теперь мне нужно выполнить следующий запрос:

Alter procedure TestProc @variableType int
As
begin
   if @variableType = 'A' then 
   -- use tableA else tableB

   IF NOT EXISTS (Select field from tableA)
   print "hello"
end 

Отредактировано: Фактический запрос после изменения теперь выглядит так:

if not exists(SELECT a.InstrumentId FROM tblARadiationLicenceRenewal a, tblA WHERE 
                            a.RenewalStatusID <> 790 AND a.InstrumentID = 5051747
                            AND a.LicenceExpiryDate = tblA.ExpiryDate
                            union
                            SELECT a.InstrumentID FROM tblRadiationLicenceRenewal a, tblB WHERE 
                            a.RenewalStatusID <> 790 AND a.InstrumentID = 5051747
                            AND a.LicenceExpiryDate = tblB.ExpiryDate
                            union
                            SELECT a.InstrumentID FROM tblRadiationLicenceRenewal a, tblC WHERE 
                            a.RenewalStatusID <> 790 AND a.InstrumentID = 5051747
                            AND a.LicenceExpiryDate = tblC.ExpiryDate)
                            -- PRINT 'HELLO WORLD' (THERE ARE LONG QUERIES AND STORED PROCEDURE RUNNING HERE

Как иметь динамическое имя таблицы ..

Ответы [ 2 ]

0 голосов
/ 29 апреля 2019

Синтаксис вашей процедуры будет следующим:

CREATE PROCEDURE TestProc   @variableType INT
AS
BEGIN
    IF @variableType = 1 
    BEGIN
        IF NOT EXISTS ( SELECT Your_Field FROM   tableA)
        PRINT 'Hello from table A'
    END

    ELSE IF @variableType = 2 
    BEGIN
        IF NOT EXISTS ( SELECT Your_Field FROM   tableB)
        PRINT 'Hello from table B'
    END

    ELSE
    BEGIN
        IF NOT EXISTS ( SELECT Your_Field FROM   tableC)
        PRINT 'Hello from table C'
    END
END
0 голосов
/ 29 апреля 2019

Вам просто нужно заменить if, вы можете сделать это без головной боли динамического sql:

Alter procedure TestProc @variableType int
As
if @variableType = 'A' then 
begin
   -- use tableA

   IF NOT EXISTS (Select field from tableA)
   print "hello"
end 
else if @variableType = 'B' then 
   begin
   -- use tableB

   IF NOT EXISTS (Select field from tableB)
   print "hello"
end 

И так далее ... Это основной подход к условию в хранимой процедуре SQL. Вы можете найти много разных подходов к поиску в Интернете.

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