.net – 可以从存储过程返回一个varchar(max)吗?

前端之家收集整理的这篇文章主要介绍了.net – 可以从存储过程返回一个varchar(max)吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
具有sql Server 2005后端的VB.net Web系统.我有一个存储过程返回一个varchar,我们终于得到了不适用于varchar(8000)的值.

我将return参数更改为varchar(max),但是如何告诉OleDbParameter.Size属性来接受任何数量的文本?

作为一个具体的例子,从存储过程中得到返回参数的VB代码看起来像:

objOutParam1 = objCommand.Parameters.Add("@RStr",OleDbType.varchar)
objOutParam1.Size = 8000
objOutParam1.Direction = ParameterDirection.Output

我可以做些什么?使用(最大)?

更新:

回答一些问题:

对于所有意图和目的,这个文本都需要作为一个大块出来. (改变这个比我想要做的更多的结构性工作,或者真的被授权)

如果我没有设置大小,我会收到错误“String [6]:Size属性的大小为0”.

解决方法

Upvoted Ed Altofer. (他首先回答,所以如果你喜欢我的答案投票他也).

OleDb是你的问题.这是一个通用的数据库连接,需要与sql Server不仅仅是交谈,因此您具有最低的公分母情况,只有最弱的组合功能集可以完全支持.其中一个丢失的功能是varchar(max)支持.

您正在使用sql Server 2005和VB.Net.什么阻止您使用System.Data.sqlClient而不是System.Data.OleDb?

编辑
我找到了关于这个问题的文件.看这里:
http://msdn.microsoft.com/en-us/library/ms131035.aspx

相关部分:

Return values of data type varchar(max),nvarchar(max),varbinary(max),xml,udt,or other large object types can not be returned to client versions earlier than sql Server 2005. If you wish to use these types as return values,you must use sql Server Native Client.

猜你在找的MsSQL相关文章