3

テーブルに 10000 レコードを挿入するために、SQL Server のストアド プロシージャに xml 文字列を渡しています。これで、このストアド プロシージャを呼び出すと。私が渡しているそのxml文字列でSQL Serverテーブルをチェックしたい、挿入したくないレコードが存在する場合、レコードだけが挿入されなければならない新しいレコードである場合、いくつかの解決策を与えてください。ありがとう。

  ALTER procedure [dbo].[SP_CMSUSER1]
      (@xmlString ntext)
    as
    begin

      DECLARE @idoc INT
      DECLARE @data nvarchar(100)

      EXEC sp_xml_preparedocument @idoc OUTPUT, @xmlString

    INSERT INTO dbo.Seg_RecipientsTemp (ContactID,first_name,last_name,company,email,last_updated)
    SELECT ContactID,
    first_name,
    last_name,
    company,
    email,
    last_updated FROM OPENXML(@idoc,

    '/NewDataSet/ContactData', 6)

    WITH

    (ContactID int ,
    first_name nvarchar(50), 
    last_name  nvarchar(50), 
    company    nvarchar(max),
    email nvarchar(100), 
    last_updated datetime 



    )
    end

私のXmlは:

 <NewDataSet>
  <Table>
    <ContactID>2</ContactID>
    <last_name>klklk</last_name>
  </Table>
  <Table>
    <ContactID>4</ContactID>
    <first_name>k</first_name>
    <last_name>kk</last_name>
    <company>k</company>
  </Table>
  <Table>
    <ContactID>6</ContactID>
    <first_name>naveen</first_name>
    <last_name />
    <company>inno</company>
  </Table>
  <Table>
    <ContactID>7</ContactID>
    <first_name>sridar</first_name>
    <last_name />
    <company>mahindara</company>
  </Table>
  <Table>
    <ContactID>1</ContactID>
    <first_name>terst</first_name>
  </Table>
  <Table>
    <ContactID>2</ContactID>
    <first_name />
    <last_name>ask</last_name>
    <company />
  </Table>
</NewDataSet>
4

2 に答える 2

0

まだコメントすることはできませんが、これが本当の答えではありませんが、助けてくれることを願っています. このページには、非常に詳細な説明があります。

https://www.red-gate.com/simple-talk/sql/learn-sql-server/the-xml-methods-in-sql-server/ (提携していません)

nodes() メソッド nodes() メソッドは、他の XML メソッドよりも少しわかりにくい場合があります。まず、nodes() メソッドは、XML またはスカラー値を返すのではなく、基本的に 1 つの列を含むテーブルを返します。つまり、FROM 句など、行セット ビューを処理できるステートメントの部分でのみメソッドを使用する必要があります。また、次の構文に示すように、nodes() メソッドを呼び出すときに、メソッドによって返される行セット ビューにテーブル エイリアスと列エイリアスを割り当てる必要があることも意味します。

DbObject.nodes('XQuery') AS TableAlias(ColumnAlias)

于 2019-03-13T12:33:38.957 に答える