Série da semana: Conheça o jeito Pythônico de programar

Veja mais

Preciso de uma força

05/12/2018

16

Galera, seguinte, eu tenho essa tabela e não estou conseguindo fazer o insert, diz que o valor é maior que a precisão especificada.

Alguém pode me ajudar?

Create Table TB_Veiculos
(
ID_Placa Varchar2(8),
DS_Renavam Varchar2(13) Constraint Vei_Renavam_nn Not Null,
DS_Marca Varchar2(40) Constraint Vei_Marca_nn Not Null,
DS_Modelo Varchar2(40) Constraint Vei_Modelo_nn Not Null,
ID_Combustivel Number(2) Constraint Vei_Combustivel_nn Not Null,
DS_Ano_Fabric Number(4) Constraint Vei_Ano_Fabr_nn Not Null,
DS_Ano_Modelo Number(4) Constraint Vei_Ano_Modelo_nn Not Null,
DS_Cor Varchar2(40) Constraint Vei_Cor_nn Not Null,
Constraint Veiculos_pk Primary Key (ID_Placa),
Constraint Vei_Comb_fk Foreign Key (ID_Combustivel) References TB_Combustivel(ID_Combustivel)
);


INSERT INTO TB_VEICULOS
VALUES('AAA-AAAA', '0000000000001', 'MERCEDES', 'AMG', 2015, 2015, 'VERMELHO',02);

*Obs, ele aponta que o erro está nos anos "2015"....

Melhor post

05/12/2018

Quando você não indica quais campo está manipulando, o insert segue a ordem de criação dos campos, logo:
INSERT INTO TB_VEICULOS VALUES('AAA-AAAA', '0000000000001', 'MERCEDES', 'AMG', 2015, 2015, 'VERMELHO',02);
estará atribuindo:
ID_Placa		Varchar(8)	= 'AAA-AAAA'
DS_Renavam		Varchar(13)	= '0000000000001'
DS_Marca		Varchar(40)	= 'MERCEDES'
DS_Modelo		Varchar(40)	= 'AMG'
ID_Combustivel	Number(2)	= 2015
DS_Ano_Fabric	Number(4)	= 2015
DS_Ano_Modelo	Number(4)	= 'VERMELHO'
DS_Cor			Varchar(40)	= 2
Então aparentemente as atribuições estão erradas a partir do campo ID_Combustivel que comporta numeros de até 2 dígitos, mas você está passando 4 dígitos.

Para evitar problemas quanto à ordem dos campos, informe-os explicitamente no insert. Assim:
INSERT INTO TB_VEICULOS(ID_Placa, DS_Renavam, DS_Marca, DS_Modelo, DS_Ano_Fabric, DS_Ano_Modelo, DS_Cor, ID_Combustivel)
VALUES('AAA-AAAA', '0000000000001', 'MERCEDES', 'AMG', 2015, 2015, 'VERMELHO',2);
Desta forma o resultado será:
ID_Placa		Varchar(8)	= 'AAA-AAAA'
DS_Renavam		Varchar(13)	= '0000000000001'
DS_Marca		Varchar(40)	= 'MERCEDES'
DS_Modelo		Varchar(40)	= 'AMG'
DS_Ano_Fabric	Number(4)	= 2015
DS_Ano_Modelo	Number(4)	= 2015
DS_Cor			Varchar(40)	= 'VERMELHO'
ID_Combustivel	Number(2)	= 2

Responder

Outros Posts

05/12/2018

Wahlfernando

E ai Julio, pode ser duas coisas, ja acontece isso comigo:

1º - Sei que está usando tipo Number, mas mesmo assim, coloque no VALUES entre aspas "2015", creio que dessa forma de certo;
2º - Se vc aumentar o Number para 5, por ex:
--> DS_Ano_Fabric Number(5) Constraint Vei_Ano_Fabr_nn Not Null,
--> DS_Ano_Modelo Number(5) Constraint Vei_Ano_Modelo_nn Not Null,
e passar somente 4 números pode ser que de certo;

Ja passei por esses dois tipo s de problemas e os dois resolveram.

Outra coisa, se estiver usando o SQL server, da uma olhada como ele faz no quesito automático pelo próprio banco, geralmente o SQL Server mostra o código do Insert, dessa forma vc pode ver como que o próprio SQl Server está passando o comando.


Abraços até.
Responder

06/12/2018

Julio Cesar

Emerson, muuuuuuuuito obrigado.

Que baita falta de atenção da minha parte. É isso mesmo, da próxima vez que precisar inserir dados eu vou me atentar mais.
Responder