【问题标题】:Oracle and TOAD (and I) disagree on number of variables to bindOracle 和 TOAD(和我)在要绑定的变量数量上存在分歧
【发布时间】:2012-09-07 19:55:03
【问题描述】:

在运行时,我得到“ORA-01008 - 并非所有变量都绑定”,其中一条 SQL 语句在 TOAD 中运行良好,并且 TOAD(和我)只找到一个参数。

如下所示,查询中只有一个参数。为什么 Oracle 会认为存在多个参数/变量并导致抛出异常?

我无法显示真正的 sql,但这里是它的传真(列/表名称已更改):

SELECT DECODE(POSTWHEELTYPE,'0','NONE','D','NUMERIC','D','RESTRICTED NEEDLE','X','TRANSFER TO WINTER','A','ACCESS CODE') HALTYPE,      
    DECODE(VALIDATIONTYPE,'0','NONE','A','FOXPRO CODE','P','PERSONAL CODE','S','RESTRICTED') JBJTYPE,
    LAZYNUMBER,
    DISPLAYTEXT,
    MINLENGTH || '-' || MAXLENGTH LENGTH,
    NVL(INSTRUCTIONS, '<NONE>') INSTRUCTIONS
FROM
    ABC.CODELAZYS
WHERE
    BQSERVERABCID = :ABCID
    AND VALIDATIONTYPE <> '0'
ORDER BY
    LAZYNUMBER DESC

【问题讨论】:

  • :ABCID 是否有可能因为某种原因没有被绑定?你能发布周围的(非SQL)代码吗?
  • 没关系 - 问题在于我绑定变量的位置(为时已晚);一旦我将它移到对 ExecuteReader() 的调用之上,它就起作用了。

标签: oracle variables parameters toad


【解决方案1】:

如果 Oracle 返回此错误代码,我敢打赌,我最后一美元的大部分资金未绑定。仅仅因为 TOAD 为变量提供了值并不意味着它已绑定在其他客户端中。

你是否 100% 肯定你的一个变量确实是绑定的?您在哪里运行失败的查询?你能告诉我们它是怎么称呼的吗?

【讨论】:

  • 查看我上面的评论 - 我会简单地删除帖子,但是当我混合“删除”时,它所提供的只是添加投票以删除它。看来OP应该可以随意删除自己的帖子了……?
  • 我认为如果您继续投票删除,它会删除帖子 - 只需一位所有者投票即可删除它。无论如何,这就是它与答案一起工作的方式。也就是说,保持这个帖子完整可能会为其他人提供他们做错了什么的线索......
【解决方案2】:

问题是我绑定变量太晚了;一旦我将它移到对 ExecuteReader() 的调用之上,它就起作用了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-09
    • 1970-01-01
    • 2014-12-16
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    相关资源
    最近更新 更多