Динамическое обновление в процедуре sql - PullRequest
0 голосов
/ 21 мая 2019

Я должен написать процедуру sql, которая генерирует обновление. У процедуры будет параметр и в этом параметре у меня будут имена таблиц. Например, Customer1, Customer2, NewCustomer. Все таблицы будут иметь поле RecordId, и я хочу объединить эти таблицы в этом поле.

В этом случае обновление будет таким



update t 
    set [Status] = 100
from 
   TemporaryTable t 
   left join Customer1 c1 on c1.RecordId = t.RecordId 
   left join Customer2 c2 on c2.RecordId = t.RecordId 
   left join NewCustomer c3 on c3.RecordId =t.RecordId

   where 
      c1.RecordId is null 
      and c2.RecordId is NULL
      and c3.RecordId is null 



Проблема в том, что число таблиц в параметре будет необязательным. Это может быть таблица 3 4 или 1, и я должен соединить их с моей временной таблицей, чтобы создать обновление. Единственное, что я знаю, это то, что у каждой таблицы будет поле RecordId, к которому я должен присоединиться к этим таблицам.

1 Ответ

0 голосов
/ 21 мая 2019

Вы можете задать свой запрос в строке и изменить его в соответствии с параметрами

set @sql='
    update t 
        set [Status] = 100
    from 
       TemporaryTable t ';

    if(@Customer1 is not null)
        begin
        set @sql=@sql+'left join Customer1 c1 on c1.RecordId = t.RecordId';
        end
...other code

и, в конце концов, выполнить строку

print(@sql)
EXECUTE(@sql)

, также вы можете ввести свои собственные данныев середине строки, надеюсь, это поможет

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