具有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
我可以做些什么?使用(最大)?
更新:
回答一些问题:
对于所有意图和目的,这个文本都需要作为一个大块出来. (改变这个比我想要做的更多的结构性工作,或者真的被授权)
解决方法
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.