“命令行错误:1 列:698 错误报告 - SQL 错误:ORA-00984:此处不允许列

Posted

技术标签:

【中文标题】“命令行错误:1 列:698 错误报告 - SQL 错误:ORA-00984:此处不允许列【英文标题】:"Error at Command Line : 1 Column : 698 Error report - SQL Error: ORA-00984: column not allowed here 【发布时间】:2016-08-29 18:38:05 【问题描述】:
INSERT INTO 
FLAG ("OPT_FLAG_KEY","H_KEY","FIRST_NAME","LAST_NAME", 
      "MIDDLE_NAME","TITLE","CREDENTIALS","ADDRESS_LINE_1",
      "ADDRESS_LINE_2","ADDRESS_LINE_3","CITY","STATE",
      "POSTAL_CODE","PHONE_NUMBER","BUSIN_PHONE","DECEASED",
      "OPT_FLAG","OPT_FLAG_DATE","SOU_KEY","SOU_FILE_ID",
      "SOU_FILE_ID_TEXT","BAT_ID","PHONE_NUMBER_SOURCE","BIRTH_DATE")
VALUES(37009326,4,'Daniel','Boyle',NULL,NULL,NULL,'368  Road',
       NULL,NULL,'Doylown','BVBV',1801,NULL,NULL,'NO','OUT',
       TO_CHAR('10-AUG-16','DD/MM/YYYY'),201,
       TO_DATE(SUBSTR('vhic_pavir_20160810.txt',12,8),YYYYMMDD),
       '2016-08-10',598441,NULL,TO_DATE('03-FEB-1952',DD-MM-YYYY));

我已在我的数据库中运行此查询,但出现如下错误

命令行错误:1 列:698 错误报告 SQL 错误:ORA-00984:此处不允许列 00984. 00000 - “此处不允许列” *原因: *行动:”

编辑:这是我的桌子的描述:

Name                Null Type          
------------------- ---- ------------- 
OPT_FLAG_KEY             NUMBER(14)    
H_KEY                    NUMBER(14)    
FIRST_NAME               VARCHAR2(50)  
LAST_NAME                VARCHAR2(50)  
MIDDLE_NAME              VARCHAR2(50)  
TITLE                    VARCHAR2(50)  
CREDENTIALS              VARCHAR2(50)  
ADDRESS_LINE_1           VARCHAR2(100) 
ADDRESS_LINE_2           VARCHAR2(100) 
ADDRESS_LINE_3           VARCHAR2(100) 
CITY                     VARCHAR2(50)  
STATE                    VARCHAR2(20)  
POSTAL_CODE              VARCHAR2(20)  
PHONE_NUMBER             VARCHAR2(100) 
BUSIN_PHONE              VARCHAR2(100) 
DECEASED                 VARCHAR2(5)   
OPT_FLAG                 VARCHAR2(10)  
OPT_FLAG_DATE            DATE          
SOU_KEY                  NUMBER(14)    
SOU_FILE_ID              DATE          
SOU_FILE_ID_TEXT         VARCHAR2(20)  
BATCH_ID                 NUMBER(14)    
PHONE_NUMBER_SOURCE      VARCHAR2(100) 
BIRTH_DATE               DATE   

【问题讨论】:

能否提供 desc 表(使用 desc table_name 命令)? 我不能给这里的所有专栏,我已经粘贴在我的 answer@abhishek 表名是什么? 表名是 FLAG 我不希望因为这个原因出现 ORA-00984 错误,但列名应该不带引号,即INSERT INTO FLAG (OPT_FLAG_KEY, H_KEY, FIRST_NAME, LAST_NAME, MIDDLE_NAME, TITLE, CREDENTIALS, ADDRESS_LINE_1, ADDRESS_LINE_2, ADDRESS_LINE_3, CITY, STATE 等希望它有所帮助。 【参考方案1】:

您的陈述有几个问题。首先,列名不需要双引号(除非您有混合大小写或空格),请删除它们。

TO_CHAR('10-AUG-16','DD/MM/YYYY') -> 10-AUG-16 是一个字符串,而不是日期。因此,将字符串转换为字符串没有任何意义

TO_DATE(SUBSTR('vhic_pavir_20160810.txt',12,8),YYYYMMDD) -> 格式必须是单引号,即TO_DATE(SUBSTR('vhic_pavir_20160810.txt',12,8),'YYYYMMDD')

'2016-08-10' -> 你想插入DATE 值还是字符串?您提供的是字符串,而不是日期。

TO_DATE('03-FEB-1952',DD-MM-YYYY)) -> 格式必须是单引号,见上文。 MM 表示月份编号,而不是月份名称。

【讨论】:

以上是关于“命令行错误:1 列:698 错误报告 - SQL 错误:ORA-00984:此处不允许列的主要内容,如果未能解决你的问题,请参考以下文章