Как построить динамический SQl для этого? - PullRequest
1 голос
/ 02 июня 2011

Мне нужно создать процедуру с динамическим SQL и сгенерировать операторы обновления.

У меня есть таблицы

Col.TMap.T_Mp

 ID   M_Type  ID_F     SF1      SF2
  1   Acc     ACC_ID   AC_ID    NULL
  1   STA     STA_ID   ST_ID    NULL
  1   CHa     Cha_ID   CH_ID    NULL

ACC

ID    AC_ID   SV1   SV2     SO1    SO2
1     12      6     NULL    =      NULL

STA

ID     STA_ID      SV1     SV2      SO1    SO2
1      1           Open    NULL     =      NULL
1      2           CLosed  NULL     =      NULL

CHa

ID    CHa_ID    SV1    SV2    SO1    SO2
1     1         PH     NULL   =      NULL
1     2         EM     NULL   =      NULL

Мне нужно обновить таблицу Ms.AT.AT_CRAW_Dmtemp с ACC_ID, STA_ID и CHA_ID из приведенных выше таблиц:

Выходное значение должно быть:

UPDATE  mt 
SET ACC_ID = ac.ACC_ID
FROM Ms.AT.AT_CRAW t
INNER JOIN Acc ac ON t.AC_ID=SV1
AND ac.ID = 1
INNER JOIN Ms.AT.AT_CRAW_Dmtemp mt 
ON mt.[SRID] = t.[RID]



UPDATE  mt 
SET STA_ID = ac.STA_ID
FROM Ms.AT.AT_CRAW t
INNER JOIN STA ac ON t.ST_ID=SV1
AND ac.ID = 1
INNER JOIN Ms.AT.AT_CRAW_Dmtemp mt 
ON mt.[SRID] = t.[RID]



UPDATE  mt 
SET CHa_ID = ac.CHa_ID
FROM Ms.AT.AT_CRAW t
INNER JOIN CHa ac ON t.CH_ID=SV1
AND ac.ID = 1
INNER JOIN Ms.AT.AT_CRAW_Dmtemp mt  
ON mt.[SRID] = t.[RID]

Так может ли кто-нибудь предложить мне, как это сделать?

1 Ответ

2 голосов
/ 02 июня 2011
select
'UPDATE  mt
SET ' + ID_F + ' = ac.' + ID_F + '
FROM Ms.AT.AT_CRAW t
INNER JOIN ' + M_Type + ' ac ON t.' + SF1 + '=SV1
AND ac.ID = 1
INNER JOIN Ms.AT.AT_CRAW_Dmtemp mt 
ON mt.[SRID] = t.[RID]' as SQL
from Col.TMap.T_Mp
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...