下面的代码中,列出了两张表的表结构及其中一张表关于列ISEDIT的数据情况,当我把其中一张有数据的表的数据住另外一张表里插入时,报出了下面的错误!!!
SQL> DESC CLIENTINFO
Name Type Nullable Default Comments
---------------- -------------- -------- ------- --------
CLIENTSHORT VARCHAR2(25) Y
CLIENTFULL VARCHAR2(200) Y
ADDRESS VARCHAR2(200) Y
BAIRRO VARCHAR2(40) Y
MUNICIPIO VARCHAR2(60) Y
UF VARCHAR2(4) Y
CEP VARCHAR2(36) Y
CGC VARCHAR2(40) Y
INSCRICAO VARCHAR2(40) Y
FONE VARCHAR2(60) Y
FAX VARCHAR2(60) Y
TRANSPORTADOR VARCHAR2(50) Y
TELDETRANS VARCHAR2(40) Y
CREDITO VARCHAR2(10) Y
DUPLICATA CHAR(1) Y 0
SOCIO VARCHAR2(225) Y
ISEDIT CHAR(1) Y 0
PAYEE VARCHAR2(100) Y
RETURNRECORD VARCHAR2(40) Y
ARQUIVOGERADO CHAR(1) Y 0
INSCRICAOSUFRAMA VARCHAR2(30) Y
ADVICEPAYEE VARCHAR2(200) Y
CONSULTA VARCHAR2(2000) Y
INFORMACAO VARCHAR2(2000) Y
SQL> DESC CLIENTINFO_NEW
Name Type Nullable Default Comments
---------------- ------------- -------- ------- --------
CLIENTSHORT VARCHAR2(25) Y
CLIENTFULL VARCHAR2(200) Y
ADDRESS VARCHAR2(200) Y
BAIRRO VARCHAR2(40) Y
MUNICIPIO VARCHAR2(60) Y
UF VARCHAR2(4) Y
CEP VARCHAR2(36) Y
CGC VARCHAR2(40) Y
INSCRICAO VARCHAR2(40) Y
FONE VARCHAR2(60) Y
FAX VARCHAR2(60) Y
TRANSPORTADOR VARCHAR2(50) Y
TELDETRANS VARCHAR2(40) Y
CREDITO VARCHAR2(10) Y
DUPLICATA VARCHAR2(5) Y
SOCIO VARCHAR2(225) Y
CONSULTA CLOB Y
INFORMACAO CLOB Y
ISEDIT VARCHAR2(5) Y
PAYEE VARCHAR2(100) Y
RETURNRECORD VARCHAR2(40) Y
ARQUIVOGERADO VARCHAR2(5) Y
INSCRICAOSUFRAMA VARCHAR2(30) Y
ADVICEPAYEE VARCHAR2(200) Y
SQL> SELECT MAX(LENGTH(ISEDIT)) FROM CLIENTINFO_NEW;
MAX(LENGTH(ISEDIT))
-------------------
1
SQL> SELECT MAX(ISEDIT) FROM CLIENTINFO_NEW;
MAX(ISEDIT)
-----------
0
SQL> INSERT INTO CLIENTINFO VARLUES SELECT * FROM CLIENTINFO_NEW;
INSERT INTO CLIENTINFO VARLUES SELECT * FROM CLIENTINFO_NEW
ORA-12899: 列 "JIANG"."CLIENTINFO"."ISEDIT" 的值太大 (实际值: 80, 最大值: 1)
SQL> DESC CLIENTINFO
Name Type Nullable Default Comments
---------------- -------------- -------- ------- --------
CLIENTSHORT VARCHAR2(25) Y
CLIENTFULL VARCHAR2(200) Y
ADDRESS VARCHAR2(200) Y
BAIRRO VARCHAR2(40) Y
MUNICIPIO VARCHAR2(60) Y
UF VARCHAR2(4) Y
CEP VARCHAR2(36) Y
CGC VARCHAR2(40) Y
INSCRICAO VARCHAR2(40) Y
FONE VARCHAR2(60) Y
FAX VARCHAR2(60) Y
TRANSPORTADOR VARCHAR2(50) Y
TELDETRANS VARCHAR2(40) Y
CREDITO VARCHAR2(10) Y
DUPLICATA CHAR(1) Y 0
SOCIO VARCHAR2(225) Y
ISEDIT CHAR(1) Y 0
PAYEE VARCHAR2(100) Y
RETURNRECORD VARCHAR2(40) Y
ARQUIVOGERADO CHAR(1) Y 0
INSCRICAOSUFRAMA VARCHAR2(30) Y
ADVICEPAYEE VARCHAR2(200) Y
CONSULTA VARCHAR2(2000) Y
INFORMACAO VARCHAR2(2000) Y
SQL> DESC CLIENTINFO_NEW
Name Type Nullable Default Comments
---------------- ------------- -------- ------- --------
CLIENTSHORT VARCHAR2(25) Y
CLIENTFULL VARCHAR2(200) Y
ADDRESS VARCHAR2(200) Y
BAIRRO VARCHAR2(40) Y
MUNICIPIO VARCHAR2(60) Y
UF VARCHAR2(4) Y
CEP VARCHAR2(36) Y
CGC VARCHAR2(40) Y
INSCRICAO VARCHAR2(40) Y
FONE VARCHAR2(60) Y
FAX VARCHAR2(60) Y
TRANSPORTADOR VARCHAR2(50) Y
TELDETRANS VARCHAR2(40) Y
CREDITO VARCHAR2(10) Y
DUPLICATA VARCHAR2(5) Y
SOCIO VARCHAR2(225) Y
CONSULTA CLOB Y
INFORMACAO CLOB Y
ISEDIT VARCHAR2(5) Y
PAYEE VARCHAR2(100) Y
RETURNRECORD VARCHAR2(40) Y
ARQUIVOGERADO VARCHAR2(5) Y
INSCRICAOSUFRAMA VARCHAR2(30) Y
ADVICEPAYEE VARCHAR2(200) Y
SQL> SELECT MAX(LENGTH(ISEDIT)) FROM CLIENTINFO_NEW;
MAX(LENGTH(ISEDIT))
-------------------
1
SQL> SELECT MAX(ISEDIT) FROM CLIENTINFO_NEW;
MAX(ISEDIT)
-----------
0
SQL> INSERT INTO CLIENTINFO VARLUES SELECT * FROM CLIENTINFO_NEW;
INSERT INTO CLIENTINFO VARLUES SELECT * FROM CLIENTINFO_NEW
ORA-12899: 列 "JIANG"."CLIENTINFO"."ISEDIT" 的值太大 (实际值: 80, 最大值: 1)
解决方案 »
- oracle sql执行顺序
- 数据量计算的问题,各位来看看
- 求CNOUG论坛邀请码,不甚感激!
- 向大家请教一个简单的 存储过程和函数 的题目!!!!
- 紧急求助!!由于误操作使用了drop table 使oracle8i中的数据丢失无数据库倍份,是否有办法恢复?
- 请问比对由两个Select产生的表中字段是否有不同的纪录?
- 又一个怪问题??
- 执行存储过程出现错误04021,但是一样的存储过程内容,换个名字就可以执行了。。
- 难道Oracle8i不支持INNER JOIN?
- 如何能从oracle中获得访问信息?
- 循环问题+时间加减问题!解决速度上分!在线等 谢谢各位!
- 求各个季度数据的SQL文,用相减的方式求得,希望各大虾指教帮忙!
Table altered
SQL> DESC CLIENTINFO_NEW
Name Type Nullable Default Comments
---------------- ------------- -------- ------- --------
CLIENTSHORT VARCHAR2(25) Y
CLIENTFULL VARCHAR2(200) Y
ADDRESS VARCHAR2(200) Y
BAIRRO VARCHAR2(40) Y
MUNICIPIO VARCHAR2(60) Y
UF VARCHAR2(4) Y
CEP VARCHAR2(36) Y
CGC VARCHAR2(40) Y
INSCRICAO VARCHAR2(40) Y
FONE VARCHAR2(60) Y
FAX VARCHAR2(60) Y
TRANSPORTADOR VARCHAR2(50) Y
TELDETRANS VARCHAR2(40) Y
CREDITO VARCHAR2(10) Y
DUPLICATA CHAR(1) Y 0
SOCIO VARCHAR2(225) Y
CONSULTA CLOB Y
INFORMACAO CLOB Y
ISEDIT CHAR(1) Y 0
PAYEE VARCHAR2(100) Y
RETURNRECORD VARCHAR2(40) Y
ARQUIVOGERADO CHAR(1) Y 0
INSCRICAOSUFRAMA VARCHAR2(30) Y
ADVICEPAYEE VARCHAR2(200) Y
SQL> DESC CLIENTINFO
Name Type Nullable Default Comments
---------------- -------------- -------- ------- --------
CLIENTSHORT VARCHAR2(25) Y
CLIENTFULL VARCHAR2(200) Y
ADDRESS VARCHAR2(200) Y
BAIRRO VARCHAR2(40) Y
MUNICIPIO VARCHAR2(60) Y
UF VARCHAR2(4) Y
CEP VARCHAR2(36) Y
CGC VARCHAR2(40) Y
INSCRICAO VARCHAR2(40) Y
FONE VARCHAR2(60) Y
FAX VARCHAR2(60) Y
TRANSPORTADOR VARCHAR2(50) Y
TELDETRANS VARCHAR2(40) Y
CREDITO VARCHAR2(10) Y
DUPLICATA CHAR(1) Y 0
SOCIO VARCHAR2(225) Y
ISEDIT CHAR(1) Y 0
PAYEE VARCHAR2(100) Y
RETURNRECORD VARCHAR2(40) Y
ARQUIVOGERADO CHAR(1) Y 0
INSCRICAOSUFRAMA VARCHAR2(30) Y
ADVICEPAYEE VARCHAR2(200) Y
CONSULTA VARCHAR2(2000) Y
INFORMACAO VARCHAR2(2000) Y
SQL> INSERT INTO CLIENTINFO VARLUES SELECT * FROM CLIENTINFO_NEW;
INSERT INTO CLIENTINFO VARLUES SELECT * FROM CLIENTINFO_NEW
ORA-12899: 列 "JIANG"."CLIENTINFO"."ISEDIT" 的值太大 (实际值: 80, 最大值: 1)
SQL> SELECT MAX(LENGTH(ISEDIT)) FROM CLIENTINFO_NEW;
MAX(LENGTH(ISEDIT))
-------------------
1
SQL> SELECT MAX(ISEDIT) FROM CLIENTINFO_NEW;
MAX(ISEDIT)
-----------
0
这里已经显示CLIENTINFO_NEW的ISEDIT列值只有一位了
改成
insert into CLIENTINFO(字段列表) select 字段列表 from CLIENTINFO_NEW 的形式.
因为CLIENTINFO_NEW表这样创建的CREATE TABLE CLIENTINFO_NEW AS SELECT * FROM CLIENTINFO;
所以后面就直接写了...太粗心了!
VARCHAR2比CHAR节省空间,在效率上比CHAR会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的‘以空间换效率’! 由于char(1)所以会截取一个字符插入!
在mssql中可以用select into方式,会自动创建表结构和数据! oracle里面相对的是
create table tableb
as
(
select * from tablea
)
试试希望对你有帮助!
之前已经经过贴了,还是很谢谢你的!