带有 SQL Server 2005 后端的 VB.net Web 系统。我有一个返回 varchar 的存储过程,但我们最终得到的值不适合 varchar(8000)。
我已将返回参数更改为 varchar(max),但如何告诉 OleDbParameter.Size 属性接受任意数量的文本?
作为一个具体示例,从存储过程获取返回参数的 VB 代码过去如下所示:
objOutParam1 = objCommand.Parameters.Add("@RStr", OleDbType.varchar)
objOutParam1.Size = 8000
objOutParam1.Direction = ParameterDirection.Output
我可以做什么 .Size 才能与(最大)一起使用?
Update:
回答一些问题:
出于所有意图和目的,本文都需要作为一个整体来呈现。 (改变这一点将需要比我想做的更多的结构性工作 - 或者真的是我授权的。)
如果我不设置大小,则会收到错误消息“String[6]:Size 属性的大小为 0 无效。”
赞成艾德·阿尔托弗。 (他先回答,所以如果你喜欢我的回答,也投票给他)。
OleDb 是你的问题。它是一个通用数据库连接,需要与 SQL Server 以外的其他对象进行通信,因此您会遇到一个最低公分母情况,即只能完全支持最弱的复合功能集。丢失的功能之一是 varchar(max) 支持。
您正在使用 SQL Server 2005 和 VB.Net。是什么阻止您使用 System.Data.SqlClient 而不是 System.Data.OleDb?
Edit
我找到了有关该问题的文档。看这里:
http://msdn.microsoft.com/en-us/library/ms131035.aspx http://msdn.microsoft.com/en-us/library/ms131035.aspx
相关部分:
返回值的数据类型varchar(最大值)、nvarchar(最大值)、varbinary(最大值)、xml、udt,或其他大对象类型无法返回到 SQL Server 2005 之前的客户端版本。如果希望使用这些类型作为返回值,则必须使用 SQL Server Native Client。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)