Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用存储过程简化XML生成_Sql Server_Xml_Sql Server 2008_Stored Procedures - Fatal编程技术网

Sql server 使用存储过程简化XML生成

Sql server 使用存储过程简化XML生成,sql-server,xml,sql-server-2008,stored-procedures,Sql Server,Xml,Sql Server 2008,Stored Procedures,我正在尝试编写一个SP,以返回XML格式的发票详细信息,以便传输给第三方 我有一个正常工作的SP,但有点凌乱(简化如下): 这个过程是可行的,但我必须创建很多这样的程序才能以不同的顺序获取不同的信息位,我尝试创建单独的SP以获取各节中的数据,下面是我的第一节SP: CREATE PROCEDURE UDEF_DC_XML_INVOICEFOOTER( @INVNO INT ) AS BEGIN SELECT HDR.[GOODS] AS InvoiceNet

我正在尝试编写一个SP,以返回XML格式的发票详细信息,以便传输给第三方

我有一个正常工作的SP,但有点凌乱(简化如下):

这个过程是可行的,但我必须创建很多这样的程序才能以不同的顺序获取不同的信息位,我尝试创建单独的SP以获取各节中的数据,下面是我的第一节SP:

CREATE PROCEDURE UDEF_DC_XML_INVOICEFOOTER(
    @INVNO INT
    )

AS

BEGIN


    SELECT HDR.[GOODS] AS InvoiceNet
         , HDR.VAT AS InvoiceVAT
         , HDR.[GOODS] + HDR.VAT AS InvoiceGross
         , (

            SELECT VATCODE AS VATListCode
                 , VATAMT AS VATListAmount
                 , VATDESC AS VATListDescription
                 , VATRATE AS VATListRate
                 , VATGOODS AS VATListGoods

            FROM InvVAT

            WHERE InvVAT.INVNO = HDR.INVNO

            ORDER BY VATAMT DESC

            FOR XML PATH('VATSummary'), TYPE
           )
    FROM InvHdr HDR

    WHERE INVNO = @INVNO

    FOR XML PATH('InvoiceFooter'), TYPE


END
当我试着叫这个:

SELECT UDEF_DC_XML_INVOICEFOOTER(@INVNO)
FOR XML PATH('Invoices'), TYPE
我得到一个错误:

Msg 4121, Level 16, State 1, Line 1
Cannot find either column "dbo" or the user-defined function or aggregate "dbo.UDEF_DC_XML_INVOICEFOOTER", or the name is ambiguous.
最后,我希望能够创建多个4/5线SP,以正确的顺序调用所有部分。可以依次调用各个SP,也可以将每个部分写入变量,然后构建完整的XML

是否可以在一条语句中调用多个返回XML的存储过程

是否可以在内部调用多个返回XML的存储过程 一份声明

不可以,但是可以使用返回XML的函数

create函数dbo.GetXML(@Value int)返回xml
作为
开始
返回(
选择@Value作为X
对于xml路径('Y'),键入
)
结束
这样使用:

选择dbo.GetXML(1)
对于xml路径('Z'))
结果:


1.

“使用存储过程简化XML生成”-这不是一个术语矛盾吗?!?这看起来很理想,您能嵌套函数调用以生成嵌套XML吗?太好了,感谢您的帮助!
Msg 4121, Level 16, State 1, Line 1
Cannot find either column "dbo" or the user-defined function or aggregate "dbo.UDEF_DC_XML_INVOICEFOOTER", or the name is ambiguous.