.net - 我可以从存储过程返回varchar(max)吗?

标签 .net sql-server-2005 stored-procedures

具有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/

相关文章:

数据库备份

php - 影响删除的 MySQL 存储过程变量名称

sql-server - ssis控制流执行sql vs数据流sql命令

sql-server - 使用存储过程从 View 中检索或筛选数据是否比使用存储过程从表中获取或筛选数据更快?

c# - Framework/Framework64 和 System32/Syswow64

SQL:将具有开始/结束的行扩展为单独的行

sql-server-2005 - 为什么在 SQL Server 2005 中无法在不锁定整个表的情况下插入/更新数据?

android - 从 .net 公开服务以供移动应用程序使用的最佳方式

c# - 易网Q。高级 API - 发布不会在 RabbitServer 上产生响应

c# - 对同一个对象的多个 WeakReferences 是否总是同步的?