OracleParameter.Size 有啥影响?
Posted
技术标签:
【中文标题】OracleParameter.Size 有啥影响?【英文标题】:What's the OracleParameter.Size influence?OracleParameter.Size 有什么影响? 【发布时间】:2012-05-08 00:26:00 【问题描述】:在 DAL 中开发使用 ODP .NET 的应用程序时,总是设置 OracleParameter
的 Size
属性非常烦人。例如:
getSPTimeCommand.Parameters.Add("pStartTime", OracleDbType.Varchar2, ParameterDirection.Output).size = 200;
是不是很丑?考虑自动设置OracleParameter
的Size
参数我认为它会影响性能或内存消耗。那是什么影响?你设置Size
的场景是什么?
提前致谢!
【问题讨论】:
【参考方案1】:来自the documentation:
指定数据的最大大小,以字节或字符为单位 传输到数据库或从数据库传输。对于 PL/SQL 关联数组 Bind,Size指定PL/SQL中元素的最大数量 关联数组。
在您的情况下,它是您传递给数据库的 varchar2 的最大大小。
【讨论】:
我确实阅读了文档。问题是通过将此Size
属性设置为 200 或 In64.MaxValue
有区别吗?
适配器会通过调用str.Length计算出字符串的长度。如果您提前指定它,它会快一点,因为适配器会在创建数据传输缓冲区之前跳过检查参数。
如果我没有指定 Size 属性,它只会抛出一个 Oracle 错误,指出 char 缓冲区太小。
实际上我的版本 odt v11 甚至没有抱怨这一点。它只是截断字符串参数并将其发送。
你能写出你的 odp 的确切版本吗?以上是关于OracleParameter.Size 有啥影响?的主要内容,如果未能解决你的问题,请参考以下文章