4
|
Tomek Szpakowicz · 技术社区 · 14 年前 |
![]() |
1
2
我个人的偏好是使用绑定变量字符串(varchar2),并让Oracle将字符转换为自己的内部存储格式。很容易(在C中)得到以可接受的格式表示为以空结束字符串的数据值。 因此,不要像这样编写SQL:
我这样写SQL:
并提供字符串作为绑定变量。 这种方法有几个优点。 一种是解决绑定其他数据类型时遇到的问题和错误。 另一个优点是绑定值更容易在OracleEvent10046跟踪上解密。 另外,一个explain计划(我相信)期望所有绑定变量都是varchar2,这意味着被解释的语句与正在执行的实际语句略有不同(由于当实际语句中的bind参数的数据类型不是varchar2时隐式的数据转换)。 而且(不太重要)当我在toad中测试语句时,只需要在输入框中输入字符串就可以了,而不必在下拉列表框中修改数据类型。 我还允许butin to_number和to_date函数验证数据。(至少在Oracle的早期版本中,我遇到了直接绑定日期值的问题,它绕过了(至少部分)有效性检查,并允许将无效的日期值存储在数据库中。 这只是个人偏好,基于过去的经验。我对PerlDBD使用相同的方法。 我想知道TomKyte(asktom.oracle.com)对这个话题有什么看法? |
![]() |
MaPo · Linux,设置锁定ICMP_过滤器选项 4 月前 |
![]() |
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 4 月前 |
![]() |
Bobby · 复合字面值总是左值吗? 5 月前 |
![]() |
9-Pin · C: 嵌套结构的堆栈内存分配 5 月前 |