开发的找过来,说刚刚新建的表,往里插入数据的时候报错
SQL> insert into AD_ORDERSHAREDETAIL(sn,order_id) values(1,2);
insert into AD_ORDERSHAREDETAIL(sn,order_id) values(1,2)
*
ERROR at line 1:
ORA-00904: "ORDER_ID": invalid identifier
SQL> insert into AD_ORDERSHAREDETAIL(sn) values(1);
insert into AD_ORDERSHAREDETAIL(sn) values(1)
*
ERROR at line 1:
ORA-00904: "SN": invalid identifier
表结构如下:
SQL> desc AD_ORDERSHAREDETAIL;
Name Null? Type
----------------------------------------- -------- ----------------------------
sn NOT NULL NUMBER(38)
order_id NUMBER(10)
orderitem_id NUMBER(10)
alliance_id VARCHAR2(32)
input_time DATE
pay_time DATE
user_id NUMBER(10)
status_id NUMBER(38)
ip VARCHAR2(50)
amount NUMBER(10,2)
kid VARCHAR2(32)
rate NUMBER(38)
amount_divided NUMBER(10,2)
payway NUMBER(4)
pcid VARCHAR2(100)
product_id NUMBER(10)
product_type NUMBER(38)
user_group NUMBER(38)
data_type NUMBER(38)
看到表结构里的字段都是小写,问题就很明朗了,肯定是建表的时候,字段名小写并且用双引号括起来了,
昨天还遇到一个存储过程类似的问题,也是过程名字用小写并加了双引号
查看一下建表SQL:
CREATE TABLE AD_ORDERSHAREDETAIL2
(
"id" NUMBER(38) NOT NULL,
"order_id" NUMBER(10),
"orderitem_id" NUMBER(10),
"alliance_id" VARCHAR2(32 BYTE),
"input_time" DATE,
"pay_time" DATE,
"user_id" NUMBER(10),
"status_id" NUMBER(38),
"ip" VARCHAR2(50 BYTE),
"amount" NUMBER(10,2),
"kid" VARCHAR2(32 BYTE),
"rate" NUMBER(38),
"amount_divided" NUMBER(10,2),
"payway" NUMBER(4),
"pcid" VARCHAR2(100 BYTE),
"product_id" NUMBER(10),
"product_type" NUMBER(38),
"user_group" NUMBER(38),
"data_type" NUMBER(38)
)
。。。
。。。
虽然说可以在insert的时候把字段也加上双引号,但是这样操作太麻烦,留着也是一个祸害,所以让开发的重新创建一下表,反正也是刚刚新建的表
SQL> insert into AD_ORDERSHAREDETAIL("sn","order_id") values(1,2);
1 row created.
SQL> roll;
Rollback complete.
这种大小写的问题,遇到过好多次了,以后给开发培训的时候,得多提几次了。
SQL> insert into AD_ORDERSHAREDETAIL(sn,order_id) values(1,2);
insert into AD_ORDERSHAREDETAIL(sn,order_id) values(1,2)
*
ERROR at line 1:
ORA-00904: "ORDER_ID": invalid identifier
SQL> insert into AD_ORDERSHAREDETAIL(sn) values(1);
insert into AD_ORDERSHAREDETAIL(sn) values(1)
*
ERROR at line 1:
ORA-00904: "SN": invalid identifier
表结构如下:
SQL> desc AD_ORDERSHAREDETAIL;
Name Null? Type
----------------------------------------- -------- ----------------------------
sn NOT NULL NUMBER(38)
order_id NUMBER(10)
orderitem_id NUMBER(10)
alliance_id VARCHAR2(32)
input_time DATE
pay_time DATE
user_id NUMBER(10)
status_id NUMBER(38)
ip VARCHAR2(50)
amount NUMBER(10,2)
kid VARCHAR2(32)
rate NUMBER(38)
amount_divided NUMBER(10,2)
payway NUMBER(4)
pcid VARCHAR2(100)
product_id NUMBER(10)
product_type NUMBER(38)
user_group NUMBER(38)
data_type NUMBER(38)
看到表结构里的字段都是小写,问题就很明朗了,肯定是建表的时候,字段名小写并且用双引号括起来了,
昨天还遇到一个存储过程类似的问题,也是过程名字用小写并加了双引号
查看一下建表SQL:
CREATE TABLE AD_ORDERSHAREDETAIL2
(
"id" NUMBER(38) NOT NULL,
"order_id" NUMBER(10),
"orderitem_id" NUMBER(10),
"alliance_id" VARCHAR2(32 BYTE),
"input_time" DATE,
"pay_time" DATE,
"user_id" NUMBER(10),
"status_id" NUMBER(38),
"ip" VARCHAR2(50 BYTE),
"amount" NUMBER(10,2),
"kid" VARCHAR2(32 BYTE),
"rate" NUMBER(38),
"amount_divided" NUMBER(10,2),
"payway" NUMBER(4),
"pcid" VARCHAR2(100 BYTE),
"product_id" NUMBER(10),
"product_type" NUMBER(38),
"user_group" NUMBER(38),
"data_type" NUMBER(38)
)
。。。
。。。
虽然说可以在insert的时候把字段也加上双引号,但是这样操作太麻烦,留着也是一个祸害,所以让开发的重新创建一下表,反正也是刚刚新建的表
SQL> insert into AD_ORDERSHAREDETAIL("sn","order_id") values(1,2);
1 row created.
SQL> roll;
Rollback complete.
这种大小写的问题,遇到过好多次了,以后给开发培训的时候,得多提几次了。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23249684/viewspace-1401638/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/23249684/viewspace-1401638/