【问题标题】:Does Oracle 10g automatically escape double quotes in recordsets?Oracle 10g 会自动转义记录集中的双引号吗?
【发布时间】:2010-11-10 19:35:54
【问题描述】:

我在从 Oracle 9i 迁移到 10g 的应用程序中遇到了一个有趣的问题。
以前,当字段包含双引号时,我们会遇到问题,因为 Oracle 记录集将字段封装在双引号中。

示例: "field1"||"field2"||"field "Y" 3"||"field4"

自从迁移到 10g 以来,我相信 Oracle 客户端驱动程序正在解析双引号并将它们替换为 "

很遗憾,我没有旧的 9i 环境来测试我的理论。

您是否看到过类似的行为,或者有人可以验证我的理论是否正确?

【问题讨论】:

  • Oracle 使用双引号来分隔查询中标识符的名称,例如从“EMP”中选择“EMPNO”。该表达式似乎不是有效 SQL 的一部分。为了清楚起见,有额外的空格:“field1”|| "字段2" || “字段”Y“3”|| “field4” - 缺少某些东西。
  • 我发布的是在记录集中返回给 VB 的查询结果。我正在尝试确定驱动程序是否正在转义双引号。我找不到任何证据表明我的应用程序代码这样做了。

标签: oracle parsing oracle10g client oracle9i


【解决方案1】:

这是一种陌生的行为。你能检查你的NLS_xx environment variables吗?一些 NLS_xx 变量可以翻译字符,例如 NLS_LANG 可以将客户端上的拉丁字符集的锐音转换为服务器上的 us2ascii 字符集。

要确定发生了什么,请尝试trace Net connections。你会看到一切从一边移动到另一边。小心……

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 2023-04-01
    • 2020-02-21
    • 2020-11-26
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    相关资源
    最近更新 更多