sp_xml_preparedocument无法在openquery语句中返回? [英] sp_xml_preparedocument fails to return in openquery statement?

查看:76
本文介绍了sp_xml_preparedocument无法在openquery语句中返回?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

示例Sp



 创建  procedure  testsp 
as
DECLARE @ idoc int @ doc varchar 1000 )=
' < OutLookContact>
< Contact FirstName =AsifLastName =GhafoorEmailAddress1 =asifghafoor@my.web.pk/>
< Contact FirstName =RameezLastName =AliEmailAddress1 =rameezali@my.web.pk/>
< / OutLookContact>'


EXEC sp_xml_preparedocument @ idoc OUTPUT @ doc

SELECT * FROM OPENXML @idoc ' / OutLookContact / Contact' 1
WITH (FirstName varchar 50 ),LastName varchar 50 ),EmailAddress1 varchar 50 ))



现在执行时

 选择 *  f rom   OPENQUERY (linkserver,'  Exec testsp '



但它返回错误

错误消息:消息11529,级别16,状态1 ,过程sp_describe_first_result_set,第1行无法确定元数据,因为每个代码路径都会导致错误;查看其中一些错误。消息2812,级别16,状态62,过程sp_describe_first_result_set,第1行无法找到存储过程'testsp'。

解决方案

尝试指定存储过程的数据库和模式名称:

 选择 *  from   OPENQUERY (linkserver,'  Exec YOURDB.dbo.testsp'


解决方法 - 使用结果集将SP包装到新SP:



  ALTER   PROCEDURE  testsp2 
AS

EXEC testsp
< span class =code-keyword> WITH RESULT SETS


FirstName nvarchar (max),
LastName nvarchar (max),
EmailAddress1 nvarchar (max)

);


Sample Sp

create procedure testsp
as
DECLARE @idoc int,@doc varchar(1000)=
'<OutLookContact>
<Contact FirstName="Asif" LastName="Ghafoor" EmailAddress1="asifghafoor@my.web.pk" />
<Contact FirstName="Rameez" LastName="Ali" EmailAddress1="rameezali@my.web.pk" />
</OutLookContact>'

EXEC sp_xml_preparedocument @idoc OUTPUT, @doc

SELECT * FROM OPENXML (@idoc, '/OutLookContact/Contact',1)
WITH (FirstName varchar(50),LastName varchar(50),EmailAddress1 varchar(50))


Now when executing

select * from OPENQUERY ( linkserver,'Exec testsp' )


But it returns error
Error Message: Msg 11529, Level 16, State 1, Procedure sp_describe_first_result_set, Line 1 The metadata could not be determined because every code path results in an error; see previous errors for some of these. Msg 2812, Level 16, State 62, Procedure sp_describe_first_result_set, Line 1 Could not find stored procedure 'testsp'.

解决方案

Try specifying the database and schema name for your stored procedure:

select * from OPENQUERY ( linkserver, 'Exec YOURDB.dbo.testsp' )


Workaround - wrap SP to new SP with result set:

ALTER PROCEDURE testsp2
AS

EXEC testsp
WITH RESULT SETS
(
(
FirstName nvarchar(max),
LastName nvarchar(max),
EmailAddress1 nvarchar(max)
)
);


这篇关于sp_xml_preparedocument无法在openquery语句中返回?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆