首页 > 解决方案 > Coldfusion 将记录插入 Oracle DB

问题描述

我正在尝试将 Coldfusion 中的记录插入 Oracle DB 11(g),但错误日志显示 ORA-00911: invalid character。我可以从 Oracle DB 中选择记录,但无法插入。

下面是我的代码。

<cfquery name="qOracleData" datasource="Oracle_Test">
    Insert into postindept (deptid, propos_position, descr, sm_descr60, grade) values ('1','110000  ', '110000  ','510000 ' ,'10');
    COMMIT;
</cfquery>

标签: oraclecoldfusionsql-insert

解决方案


Oracle 仅支持每个查询使用一条语句。从插入语句中删除COMMIT;(您不需要,因为事务应该自动提交)和尾随分号。

此外,如果您要插入数值,则不应将它们作为字符串传递:

<cfquery name="qOracleData" datasource="Oracle_Test">
    Insert into postindept (
      deptid, propos_position, descr, sm_descr60, grade
    ) values (
      1,      110000,          110000, 510000,    10
    )
</cfquery>

你可以使用绑定参数

<cfquery name="qOracleData" datasource="Oracle_Test">
    Insert into postindept (
      deptid,
      propos_position,
      descr,
      sm_descr60,
      grade
    ) values (
      <cfqueryparam value = "1"      cfsqltype = "CF_SQL_NUMERIC" />,
      <cfqueryparam value = "110000" cfsqltype = "CF_SQL_NUMERIC" />,
      <cfqueryparam value = "110000" cfsqltype = "CF_SQL_NUMERIC" />,
      <cfqueryparam value = "510000" cfsqltype = "CF_SQL_NUMERIC" />,
      <cfqueryparam value = "10"     cfsqltype = "CF_SQL_NUMERIC" />
    )
</cfquery>

推荐阅读