首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Server中的SQLCLR存储过程返回的Access SqlXml

从Server中的SQLCLR存储过程返回的Access SqlXml
EN

Stack Overflow用户
提问于 2017-04-11 15:12:42
回答 1查看 369关注 0票数 2

我有一些C#代码(SQLCLR),它将一个XML文件从本地机器读取到一个流中,并以SQLXML的形式返回给SQLXML:

C#代码

代码语言:javascript
复制
 Stream str = File.OpenRead(xmlFilePath);
 sqlXMLToReturn = new SqlXml(str);

来自Server 2014的SQL调用:

代码语言:javascript
复制
DECLARE @ResultForPos xml
EXEC @ResultForPos = spGetXmlForFile
SELECT @ResultForPos

当我从Visual 2015中的Server对象资源管理器调试上述SQL脚本时,C#代码中的断点就会被击中。在C#代码中没有出现异常。但是,在运行该脚本后,我将在Server中得到以下错误。

Msg 206,16级,状态2,过程spWcfCall,第43行 操作数类型冲突: int与xml不兼容

我做错了什么?我是否必须执行sqlXMLToReturn.Value并返回一个字符串而不是SQLXML。

EN

回答 1

Stack Overflow用户

发布于 2017-04-11 15:22:40

存储过程,无论是纯they还是SQLCLR,总是返回INT / SqlInt32。如果要传回XML / SqlXml,则需要使用OUTPUT / out / ref参数。

最后,语法应该类似于以下内容:

代码语言:javascript
复制
EXEC dbo.spGetXmlForFile @OutParamName = @ResultForPos OUTPUT;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43349864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档