WITHデータセットの結果に基づいて2つの異なるステートメントを実行する必要があります。しかし、文書では、WITHには1つの命令しか続かないことが示されています。WITH結果を使用して2つのステートメントを実行
WITHで返されたデータセットを使用して2つのステートメントを実行する簡単な方法はありますか?私は2つのステートメントをbegin ... endセクションまたは括弧内に含めるようなことを考えていました... ...
これは私のコードです。私はこの結果をUPDATEとINSERTを実行したいと思います。 WITH:
with EMPRESAS
as (
select splitdata as EMPRESA from fnSplitString(@EMPRESES_CONTA_SEPARADES_PER_COMA, ',')
union
select substring(@BRANCH_1,1,1)
), PROA_EMPRESAS
as (
select case EMPRESA when 'A' then 2 when 'B' then 5 when 'C' then 4 when 'D' then 1 when 'E' then 3 end as PROA_EMPRESA
from EMPRESAS
)
update CLIENTE_CLIENTE_TIPO set CLG_COD = dbo.cCLIENTE_GRUPO_ClienteConActividad(), CCE_COD = @TARGMAG, CCT_ORI = 2
from PROA_EMPRESAS
inner join CLIENTE_CLIENTE_TIPO on CTI_COD = dbo.cCLIENTE_TIPO_Cliente() and CLI_COD = @CLI_COD and EMP_KEY = PROA_EMPRESA
where isnull(CLG_COD,-1) <> dbo.cCLIENTE_GRUPO_ClienteConActividad() or isnull(CCE_COD,'') <> @TARGMAG or isnull(CCT_ORI,-1) <> 2;
insert into CLIENTE_CLIENTE_TIPO (CTI_COD, CLI_COD, EMP_KEY, CLG_COD, CCE_COD, CCT_ORI)
select dbo.cCLIENTE_TIPO_Cliente(), @CLI_COD, PROA_EMPRESA, dbo.cCLIENTE_GRUPO_ClienteConActividad(), @TARGMAG, 2
from PROA_EMPRESAS
left outer join CLIENTE_CLIENTE_TIPO EXISTE on EXISTE.CTI_COD = dbo.cCLIENTE_TIPO_Cliente() and EXISTE.CLI_COD = @CLI_COD and EXISTE.EMP_KEY = PROA_EMPRESA
where PROA_EMPRESA is not null and EXISTE.CLI_COD is null;
単一の命令としての私のINSERTやUPDATEを網羅するための簡単な方法はありますか私は実際にストアドプロシージャを作成したり、すべての命令のための私のWITHを再定義する必要がありますか?。
ありがとうございます。
は非常によく説明しました。私は現在のコードよりも簡単なので、最初の解決策を取るつもりです。しかし、ある時点で私はMERGEを使うことを学ぶ必要があります。ありがとうございました。 –