ORA-00917:缺少逗号

时间:2012-03-01 03:57:51

标签: oracle10g

Name               Null     Type           
------------------ -------- -------------- 
RESOURCE_ID        NOT NULL NUMBER(38)     
RESOURCE_FIRST_NM  NOT NULL VARCHAR2(30)   
RESOURCE_MIDDLE_NM          VARCHAR2(30)   
RESOURCE_LAST_NM   NOT NULL VARCHAR2(30)   
RESOURCE_TYPE_CD   NOT NULL VARCHAR2(10)   
EMPLOYEE_ID                 VARCHAR2(20)   
EMPLOYEE_TYPE_CD            VARCHAR2(10)   
FUNCTIONAL_LEAD_CD          VARCHAR2(10)   
PHONE_1                     VARCHAR2(15)   
PHONE_2                     VARCHAR2(15)   
FAX_NR                      VARCHAR2(15)   
EMAIL_DE                    VARCHAR2(50)   
RESOURCE_STATUS_CD NOT NULL VARCHAR2(10)   
HIRING_DT          NOT NULL DATE           
LEAVE_START_DT              DATE           
LEAVE_END_DT                DATE           
TERMINATED_DT               DATE           
ADDRESS1                    VARCHAR2(50)   
ADDRESS2                    VARCHAR2(50)   
CITY                        VARCHAR2(15)   
STATE                       VARCHAR2(15) 


int i=statement.executeUpdate("
     insert into RAS_T_RESOURCES(
         RESOURCE_ID, 
         RESOURCE_FIRST_NM, 
         RESOURCE_MIDDLE_NM, 
         RESOURCE_LAST_NM, 
         RESOURCE_TYPE_CD, 
         EMPLOYEE_ID, 
         FUNCTIONAL_LEAD_CD, 
         ADDRESS1, 
         ADDRESS2, 
         PHONE_1, 
         PHONE_2, 
         FAX_NR, 
         EMAIL_DE, 
         RESOURCE_STATUS_CD, 
         HIRING_DT, 
         LEAVE_START_DT, 
         LEAVE_END_DT, 
         TERMINATED_DT,
         CITY,
         STATE)
    values(
         2,  
         '"+strFirstname+"', 
         '"+strMiddlename+"', 
         '"+strLastname+"', 
         '"+strResourceType+"', 
         '"+strEmpId+"', 
         '"+strHiringMngr+"', 
         '"+strAddress1+"', 
         '"+strAddress2+"',
         '"+strPhone1+"', 
         '"+strPhone2+"', 
         '"+strFax+"', 
         '"+strEMail+"', 
         '"+strstatus+"', 
         "+strHiringDate+", 
         "+strStartDate+", 
         "+strEndDate+", 
         "+strTerminatedDate+", 
         '"+strCity+"', 
         '"+strState+"');");

任何人都可以帮忙吗?有什么问题?

2 个答案:

答案 0 :(得分:3)

我的猜测是问题是你没有使用绑定变量,并且你得到了一个与连接字符串相关的错误。例如,如果数据中有逗号,则会导致问题。如果Java字符串恰好与会话的DATE不匹配,则任何Oracle NLS_DATE_FORMAT列都会产生问题。

出于性能,可用性和安全性原因,我强烈建议使用绑定变量。

答案 1 :(得分:3)

纯粹作为编译器思考,这样的表达式:

     '"+strFirstname+"'

将被解释为文字字符串。 (如果您正在考虑的话,则不会进行变量替换。)

这一点可能是问题所在:

     "+strHiringDate+", 
     "+strStartDate+", 
     "+strEndDate+", 
     "+strTerminatedDate+", 

这些将被Oracle解析为标识符,而不是字符串 - 因为您省略了单引号('),Oracle标识符可选地用双引号(“)分隔。

相关问题