2

SQL Azure で使用するプロシージャを変換しようとしています。OPENXMLSQL Azure ではサポートされていないというエラーが最初に表示されましたが、 nodes.

しかし、私はそのWITH (Id BIGINT '.')部分を変換する方法がわかりません。WITHサブクエリを作成することは知っていますが、'.'ここで何をしているのでしょうか?

CREATE Procedure [dbo].[DocsR]
    @ids    xml     -- <Ids><Id>1</Id><Id>2</Id></Ids>
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @IdsXml xml 
    exec sp_xml_preparedocument @IdsXml OUTPUT, @Ids

    SELECT
        DoctId,
        DocNm
    FROM
        Docs
    WHERE
        --DocId IN (SELECT Id FROM OPENXML(@IdsXml, '/Ids/Id', 2) WITH (Id BIGINT '.'))
          DocId IN (SELECT Id FROM @IdsXml.nodes('/Ids/Id') WITH (Id BIGINT '.'))
END
GO

エラー:

Incorrect syntax near the keyword 'with'. If this statement is a common 
table expression, an xmlnamespaces clause or a change tracking context clause, 
the previous statement must be terminated with a semicolon.
4

1 に答える 1

1

次のことを試してください。

  SELECT
        DoctId,
        DocNm
    FROM
        Docs
    WHERE
          DocId IN (SELECT Id = node.value('.', 'INT') 
                      FROM @IdsXml.nodes('/Ids/Id') AS R(node))
于 2012-10-08T21:52:51.713 に答える