具有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
我怎样才能使.Size与(最大值)一起使用?
更新:
要回答一些问题:
出于所有目的和目的,本文都需要作为一个整体提出。 (更改将比我想做的要花费更多的结构性工作,或者确实得到了授权。)
如果未设置大小,则会显示错误消息“String [6]:Size属性的大小为0”。
最佳答案
支持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.
关于.net - 我可以从存储过程返回varchar(max)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/222661/