0

ストアド プロシージャ内の xquery 挿入ステートメントで nvarchar 型の sproc 変数を使用することは可能ですか? 私が言いたいのは、次のようなもので、求められた値を持つ子要素が存在する場合にのみ要素が挿入されるということです:

DECLARE @profiles_xml xml
DECLARE @profile_id int
DECLARE @user_id nvarchar(50)
SET @profile_id = 20
SET @user_id ='BC4A18CA-AFB5-4268-BDA9-C990DAFE7783'
SET @profiles_xml = (SELECT profiles from tbl_applied_profiles WHERE profiles.value('(Profile/ID)[1]','int')= @profile_id)
SET @profiles_xml.modify('
insert
if(/Profile/User/ID="user_id")
then <Activity>activity_name5</Activity>
else()
as first
into (/Profile/User/Activities)[1]')

@profiles_xml に含まれる xml は次のようになります。

<Profile>
  <ID>20</ID>
  <User>
    <ID>BC4A18CA-AFB5-4268-BDA9-C990DAFE7783</ID>
    <Name>somename</Name>
    <Activities>
      <Activity>activity_name2</Activity>
    </Activities>
  </User>
</Profile>
4

1 に答える 1

0

sql:variable("@user_id")あなたは、すなわちを使用する必要があります

SET @profiles_xml.modify('
insert
if(/Profile/User/ID=sql:variable("@user_id"))
then <Activity>activity_name5</Activity>
else()
as first
into (/Profile/User/Activities)[1]');
select @profiles_xml;
于 2012-11-05T05:28:37.600 に答える