【发布时间】:2014-07-07 16:25:27
【问题描述】:
我有一个存储过程,它返回 2 个结果集,每个结果集都包含一个单元格。在第一个中,我返回一个 xml,在第二个中返回一个日期时间值。
我尝试从链接服务器访问此 SP (SP_XML),但未能说明链接服务器上不允许使用 XML。所以我写了一个如下的包装器(SP_NChar)。问题是我只需要跨链接服务器的 XML 结果集,而不需要日期时间结果集(无论我是否收到它都没有关系)
CREATE PROCEDURE SP_NChar
AS
BEGIN
-- TO STORE PROC RESULT
DECLARE @XML_RESULT TABLE(result XML)
BEGIN TRY
INSERT INTO @XML_RESULT(result) EXEC SP_XML
SELECT CAST(result AS NVARCHAR(MAX)) FROM @XML_RESULT
END TRY
BEGIN CATCH
-- This block will get executed because one is XML and another is Datetime and it will fail in try part
PRINT 'Do Nothing'
select * from @XML_RESULT
END CATCH
END
它在我的开发环境中按预期工作,但在 prod 环境中失败,不知道可能出了什么问题。
此处仅用于测试目的 SP_XML
CREATE procedure SP_XML
as
BEGIN
select CAST('<ROOT>2</ROOT>' AS XML)
select getdate()
END
【问题讨论】:
标签: sql xml procedure nvarchar