【问题标题】:ErrorCode: 904 Message: Oracle JDBC Driver ORA-00904: : invalid identifier SQLState: 42S22错误代码:904 消息:Oracle JDBC 驱动程序 ORA-00904::无效标识符 SQLState:42S22
【发布时间】:2014-02-07 17:50:03
【问题描述】:

错误代码:904 消息:Oracle JDBC 驱动程序 ORA-00904::无效标识符 SQLState:42S22

这个函数有什么问题?我用插入调用它并收到 904 错误?

<!---- create ---->
<cffunction name="create" returntype="void">
      <cfargument name="dsn" type="any" required="true" />
      <cfargument name="FNAME" type="string" required="true" />
      <cfargument name="LNAME" type="string" required="true" />
      <cfargument name="EMAIL" type="string" required="true" />
      <cfargument name="PHONE" type="string" required="true" />
      <cfargument name="TITLE" type="string" required="true" />
      <cfargument name="EXPERTISE" type="string" required="true" />
      <cfargument name="TASCS" type="string" required="true" />
      <cfargument name="LEADERSHIP" type="string" required="true" />
      <cfargument name="MANAGEMENT_TEAM" type="string" required="true" />
      <cfargument name="PARTNERS" type="string" required="true" />
      <cfargument name="CONSULTANTS" type="string" required="true" />
      <cfargument name="MEDIA_EVENTS" type="string" required="true" />
      <cfargument name="WEBSITE" type="string" required="true" />
      <cfargument name="ORGANIZATION" type="string" required="true" />
      <cfargument name="PHOTO_NAME" type="string" required="true" />
      <cfargument name="CV_FILE" type="string" required="true" />
      <cfargument name="BIO" type="string" required="true" />

    <cfset var qry="" />    
    <!----TODO:  Below code is for table without auto increment enabled for primary key .Change the query Appropriately---->
    <!---- insert record ---->
    <cftry>
    <cfquery name="qry" datasource="#dsn.getName()#">
        INSERT INTO DIRECTORY
        (
            DIRECTORY_ID,
            FNAME,
            LNAME,
            EMAIL,
            PHONE,
            TITLE,
            EXPERTISE,
            TASCS,
            LEADERSHIP,
            MANAGEMENT_TEAM,
            PARTNERS,
            CONSULTANTS,
            MEDIA_EVENTS,
            WEBSITE,
            ORGANIZATION,
            BIO,
            CREATEDBY,
            ISACTIVE
        )
        VALUES
        (
            DIRECTORY_SEQ.nextval,
            <cfqueryparam cfsqltype="CF_SQL_VARCHAR"        value="#ARGUMENTS.FNAME#" null="false" />,
            <cfqueryparam cfsqltype="CF_SQL_VARCHAR"        value="#ARGUMENTS.LNAME#" null="false" />,
            <cfqueryparam cfsqltype="CF_SQL_VARCHAR"        value="#ARGUMENTS.EMAIL#" null="false" />,
            <cfqueryparam cfsqltype="CF_SQL_VARCHAR"        value="#ARGUMENTS.PHONE#" null="false" />,
            <cfqueryparam cfsqltype="CF_SQL_VARCHAR"        value="#ARGUMENTS.TITLE#" null="false" />,
            <cfqueryparam cfsqltype="CF_SQL_VARCHAR"        value="#ARGUMENTS.EXPERTISE#" null="false" />,
            <cfqueryparam cfsqltype="CF_SQL_VARCHAR"        value="#ARGUMENTS.TASCS#" null="false" />,
            <cfqueryparam cfsqltype="CF_SQL_VARCHAR"        value="#ARGUMENTS.LEADERSHIP#" null="false" />,
            <cfqueryparam cfsqltype="CF_SQL_VARCHAR"        value="#ARGUMENTS.MANAGEMENT_TEAM#" null="false" />,
            <cfqueryparam cfsqltype="CF_SQL_VARCHAR"        value="#ARGUMENTS.PARTNERS#" null="false" />,
            <cfqueryparam cfsqltype="CF_SQL_VARCHAR"        value="#ARGUMENTS.CONSULTANTS#" null="false" />,
            <cfqueryparam cfsqltype="CF_SQL_VARCHAR"        value="#ARGUMENTS.MEDIA_EVENTS#" null="false" />,
            <cfqueryparam cfsqltype="CF_SQL_VARCHAR"        value="#ARGUMENTS.WEBSITE#" null="false" />,
            <cfqueryparam cfsqltype="CF_SQL_VARCHAR"        value="#ARGUMENTS.ORGANIZATION#" null="false" />,
            <cfqueryparam cfsqltype="CF_SQL_LONGVARCHAR"    value="#ARGUMENTS.BIO#" null="false" />,
            <cfqueryparam cfsqltype="CF_SQL_TIMESTAMP"      value="#now()#" null="false" />,
            1
        )
    </cfquery>

        <cfcatch type="Any" >
            <cfdump var="#CFCATCH#" output="C:\data\directorydao_create.txt">
        </cfcatch>
    </cftry>

</cffunction>

directorydao_create.txt 文件中出现的错误。

struct

Cause:  
    [struct]
    ErrorCode: 904
    Message: [Macromedia][Oracle JDBC Driver][Oracle]ORA-00904: "BIO": invalid identifier
    SQLState: 42S22
    StackTrace: java.sql.SQLSyntaxErrorException: [Macromedia][Oracle JDBC Driver][Oracle]ORA-00904: "BIO": invalid identifier
        at macromedia.jdbc.oraclebase.ddca.b(Unknown Source)
        at macromedia.jdbc.oraclebase.ddca.a(Unknown Source)
        at macromedia.jdbc.oraclebase.ddb9.b(Unknown Source)
        at macromedia.jdbc.oraclebase.ddb9.a(Unknown Source)
        at macromedia.jdbc.oracle.ddm.q(Unknown Source)
        at macromedia.jdbc.oraclebase.ddem.v(Unknown Source)
        at macromedia.jdbc.oraclebase.ddem.r(Unknown Source)
        at macromedia.jdbc.oraclebase.dddg.execute(Unknown Source)
        at macromedia.jdbc.oraclebase.dddk.execute(Unknown Source)
        at coldfusion.server.j2ee.sql.JRunPreparedStatement.execute(JRunPreparedStatement.java:101)
        at coldfusion.sql.Executive.executeQuery(Executive.java:1458)

【问题讨论】:

  • Oracle 似乎在说 BIO 列不存在。如果您使用 select BIO from DIRECTORY 运行 CFQuery,它会正确运行吗?

标签: oracle coldfusion


【解决方案1】:

看来“BIO”要么是表中不存在的列,要么是无效的列名(我不认为这是真的,因为它不是 reserved word 并且匹配所有其他条件是有效的列名)。确保数据库表中存在“BIO”列。

【讨论】:

    猜你喜欢
    • 2017-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多