【问题标题】:ORACLE: invalid user.table.column, table.column, or column specification with no obvious errorORACLE:无效的 user.table.column、table.column 或列规范,没有明显错误
【发布时间】:2012-01-21 13:59:37
【问题描述】:

我在跑步

<CFQUERY DataSource="#XXX.DSN#">
    UPDATE FUNKUS_LIST
    SET 
    <CFIF OPERATIONRECEIVED IS "Enable">
        FUNKUS_STATUS_ID=<CFQUERYPARAM value="1"
        CFSQLTYPE="CF_SQL_INTEGER">
    <CFELSEIF OPERATIONRECEIVED IS "Revoke">
        FUNKUS_STATUS_ID=<CFQUERYPARAM value="3"
        CFSQLTYPE="CF_SQL_INTEGER">
    </CFIF>
    WHERE
        FUNKUS_LIST_ID in (
        <CFQUERYPARAM   value="#form.dltCheckbox#"
        CFSQLTYPE="CF_SQL_INTEGER"
            LIST="Yes">
            )
</CFQUERY>

在带有 oracle 9i 数据库的 Coldfusion MX7 中。可能是什么原因:

执行数据库查询时出错。 ORA-01747: 无效的 user.table.column, table.column,或列规范

form.dltCheckbox 应该是表单上的一个复选框组。

FUNKUS_LIST_ID 是一个整数列,手动列出的数字是正确且有效的 ID。 OPERATIONRECEIVED 是一个字符串,表示在此操作表单中应执行的操作。我已经确认所有列名和表名都匹配

【问题讨论】:

  • 此表上是否有任何可能导致问题的触发器?

标签: sql oracle coldfusion plsql


【解决方案1】:

您需要将 list = "true" 属性添加到您的 cfqueryparam:

WHERE
        FUNKUS_LIST_ID in (
        <CFQUERYPARAM   value="#form.dltCheckbox#" LIST="TRUE"
        CFSQLTYPE="CF_SQL_INTEGER"> )

...还添加一个结束括号

编辑

针对您的评论 - 您是否确认 OPERATIONRECEIVED 绝对是“启用”或“撤销”?如果不是这些,那么您的 SQL 将不完整,因为 set 子句中不会列出任何列。

【讨论】:

  • 抱歉,不知怎的,我有一个列表声明。现在正在编辑问题...仍然有错误。
  • 嗯,我相信它是正确的。它将来自表单中的诸如 之类的内容。
  • 请确认它确实是这些值之一。如果它被关闭提交按钮,就像你说的那样,很可能没有发送表单字段 - 无需单击按钮即可轻松提交表单(例如,通过在文本输入框中按 enter),其中如果不存在任何值。
  • 是的,它确实关闭了该值,它是由人工按钮单击触发的。我一直在尝试寻找方法来转储上面列出的一些变量的值,但我绝对不是冷融合开发人员
  • 要 +1 你并接受。您没有给我确切的答案,但是按照您对 CFDUMP 的说明,我能够在导致此问题的应用程序的另一部分中找到错误的逻辑。
猜你喜欢
  • 2015-05-01
  • 2021-03-05
  • 2012-03-16
  • 2013-10-21
  • 2018-12-19
  • 2013-04-28
  • 2016-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多