2016-03-03 63 views
0

我试图实现插入全部查询时。我不断收到无效的标识符错误,我不确定它的表格结构是否导致错误,或者我的查询中是否包含其他内容。无效标识符时插入全部

Customer表

Name  Type   
C_ID NUMBER  
C_FN VARCHAR2(10) 
C_LN VARCHAR2(10) 
C_PH VARCHAR2(12)  
C_BD DATE 

折扣表

Name Type   
C_ID NUMBER  
C_LN VARCHAR2(10) 
C_FN VARCHAR2(10) 

我的查询:

INSERT ALL 
    WHEN C_BD <= TO_DATE('01-JAN-1950','DD-MON-YYYY') THEN 
    INTO DISCOUNT(C_ID,C_LN,C_FN) 
    VALUES(C_ID,C_LN,C_FN) 
SELECT C_ID,C_LN,FROM CUSTOMER; 

C_BD被作为一个 '无效的标识符'

我想抛出的错误给你nderstand是什么原因造成这个问题

+1

缺少列名吗? 'SELECT C_ID,C_LN,FROM CUSTOMER' – artm

+0

既然你只引用一个表,可能'插入折扣选择c_id,c_ln,c_fn from customer'会更好。无论哪种方式,你的问题是你的'select'语句。 – sgeddes

回答

1

您需要选择在SELECTC_BD

INSERT ALL 
    WHEN C_BD <= TO_DATE('01-JAN-1950', 'DD-MON-YYYY') THEN 
     INTO DISCOUNT(C_ID,C_LN,C_FN) 
     VALUES (C_ID, C_LN, C_FN) 
    SELECT C_ID, C_LN, C_FN, C_BD 
    FROM CUSTOMER; 
+0

那么C_BD应该是我的折扣表结构的一部分吗? – lnjblue

+0

@Injblue。 。 。它不需要。重要的一点是,它是从'CUSTOMER'中选择的,所以它对'WHEN'是可见的。 –