我有一些C#代码(SQLCLR),它将XML文件从本地机器读入流并以SQLXML形式返回SQL:
Stream str = File.OpenRead(xmlFilePath);
sqlXMLToReturn = new SqlXml(str);
DECLARE @ResultForPos xml
EXEC @ResultForPos = spGetXmlForFile
SELECT @ResultForPos
当我从Visual Studio 2015中的SQL Server对象资源管理器调试上述SQL脚本时,我的C#代码中的断点会受到影响。在C#代码中没有引发异常。但是在运行脚本后,我在SQL Server中收到以下错误。
Msg 206,Level 16,State 2,Procedure spWcfCall,Line 43
操作数类型碰撞:int与xml不兼容
我做错了什么?我是否必须执行sqlXMLToReturn.Value并返回一个字符串而不是SQLXML。
答案 0 :(得分:0)
存储过程,无论它们是纯T-SQL还是SQLCLR,总是返回INT
/ SqlInt32
。如果您想传回XML
/ SqlXml
,则需要使用OUTPUT
/ out
/ ref
参数。
最后,语法应类似于以下内容:
EXEC dbo.spGetXmlForFile @OutParamName = @ResultForPos OUTPUT;