【问题标题】:TOAD thinks &String as bind variableTOAD 认为 &String 是绑定变量
【发布时间】:2013-02-10 13:44:14
【问题描述】:

我正在使用 Oracle Data Integrator 开发一些 ETL,有时通过 TOAD 测试我的部分代码。今天我遇到了 TOAD 的问题,我有一条类似

的行
AND column_value like('DEV&PROD')

当我尝试运行包含上述过滤器的 SQL 时,TOAD 询问 PROD 的值,它认为 PROD 是一个绑定或替换变量。 TOAD 设置中是否有任何选项可以打开此功能。我正在使用带有列 (:) 的绑定变量,并且我的数据包含 & 所以我需要使用它。

此代码在 ODI 中完美运行,我只需要 TOAD 的解决方案。提前致谢。

【问题讨论】:

    标签: sql oracle plsql toad bind-variables


    【解决方案1】:

    1) 使用 set define off; 启动您的脚本(并使用 F5 键运行整个脚本)

    2) 使用'DEV&'||'PROD' 而不是'DEV&PROD'

    3)为变量设置另一个前缀符号

    set define ~;
    select 'drag&drop', ~column_name from ~table_name;
    

    (系统会提示您输入 column_name 和 table_name,但不会提示您输入 'drop')

    【讨论】:

    • 第一种方法非常适合这种情况,谢谢,但是当我尝试将变量也绑定到列时,它也会忽略这些变量。而且我不想将我的字符串分成多个部分。那么无论如何我可以使用 :bind_variable,忽略 &not_a_variable 并且不拆分我的字符串。提前致谢。
    • @CanburakTümer - 是的,请参阅附加的解决方案 #3
    【解决方案2】:

    此外 - 可以在任何工具或 SQL 提示符下工作:

    SELECT ('DEV'||'&'||'PROD') val FROM dual
    /
    
    -- Q-quote operator introduced in Oracle 10g --
    SELECT 'DEV' || q'[&]'||'PROD' AS val FROM dual
    /
    

    使用 Egor 或我的示例 - 复制/粘贴,为 :bind_var 输入 1:

    SELECT 'DEV&'||'PROD' val FROM dual
     WHERE :bind_var = 1
    /
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-09
      • 1970-01-01
      • 1970-01-01
      • 2014-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-29
      相关资源
      最近更新 更多