XML から SQL クエリの条件の一部を作成する必要があります。
次のような XML があります。
<ROOT>
<PARAMETROS>
<USU_LOGIN>yleon</USU_LOGIN>
<USU_NOMBREPRIMERO>Yerusha</USU_NOMBREPRIMERO>
<USU_APELLIDOPRIMERO>Leon</USU_APELLIDOPRIMERO>
<USU_EMAIL>yleon@email.com</USU_EMAIL>
<USU_FECHACREACION>20130510</USU_FECHACREACION>
<USU_CODICIONES1 TIPO="MC">AND USU_ID=4</USU_CODICIONES1>
<USU_CODICIONES2 TIPO="MC">AND USU_ID=5</USU_CODICIONES2>
<USU_CODICIONES3 TIPO="HG">AND USU_ID=9</USU_CODICIONES3>
...
<USU_CODICIONESN TIPO="MC">AND USU_ID=50</USU_CODICIONESN>
</PARAMETROS>
</ROOT>
したがって、属性 TIPO="MC" を使用して条件を抽出する必要があります。私はこのコードで行います:
SELECT txt = T.Item.value('data(.)', 'varchar(255)')
FROM @xml.nodes('/ROOT/PARAMETROS/*') AS T(Item)
WHERE T.Item.value('data(@TIPO)', 'varchar(255)')='MC'
さて、私のクエリが次のとおりであるとします。
Select * from USUARIOS
where 1=1 USU_CODICIONES1 USU_CODICIONES2 .. USU_CODICIONESn
XML をループする「@@USU_CODICIONESX」を置換する必要がありますが、カーソル (おそらく cte) は使用しません。
期待される結果は次のとおりです。
Select * from USUARIOS
where 1=1 AND USU_ID=4 AND USU_ID=5 .. AND USU_ID=50