Nothunt 0 Denunciar post Postado Maio 13, 2007 Olá!tenho um problema:estou a tentar inserir dados nesta tabela: -- Start of DDL Script for Table NOTHUNT.COMPONENTES-- Generated 13-Mai-2007 21:08:46 from NOTHUNT@NOPROBLECREATE TABLE componentes (id_componente NUMBER(6,0) NOT NULL, id_tipo_aula NUMBER(6,0) NOT NULL, id_disciplina NUMBER(6,0) NOT NULL, id_utilizador NUMBER(6,0) NOT NULL, id_motivo NUMBER(6,0), num_horas_componente NUMBER(2,0) NOT NULL, data_inicio_componente DATE NOT NULL, data_u_alteracao_componente DATE, data_fim_componente DATE, obs_componente VARCHAR2(500)) PCTFREE 10 INITRANS 1 MAXTRANS 255 TABLESPACE users STORAGE ( INITIAL 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 )/-- Indexes for COMPONENTESCREATE INDEX tem_fk ON componentes ( id_disciplina ASC ) PCTFREE 10 INITRANS 2 MAXTRANS 255 TABLESPACE users STORAGE ( INITIAL 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 )/CREATE INDEX modulo_comp_fk ON componentes ( id_tipo_aula ASC ) PCTFREE 10 INITRANS 2 MAXTRANS 255 TABLESPACE users STORAGE ( INITIAL 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 )/CREATE INDEX alterar_componente_fk ON componentes ( id_motivo ASC ) PCTFREE 10 INITRANS 2 MAXTRANS 255 TABLESPACE users STORAGE ( INITIAL 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 )/CREATE INDEX com_def_por_fk ON componentes ( id_utilizador ASC ) PCTFREE 10 INITRANS 2 MAXTRANS 255 TABLESPACE users STORAGE ( INITIAL 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 )/-- Constraints for COMPONENTESALTER TABLE componentesADD CONSTRAINT pk_componentes PRIMARY KEY (id_componente)USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 TABLESPACE users STORAGE ( INITIAL 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 )/-- Comments for COMPONENTESCOMMENT ON COLUMN componentes.data_fim_componente IS 'Campo que identifica a data em que a componente deixou de ser utilizada.'/COMMENT ON COLUMN componentes.data_inicio_componente IS 'Campo que identifica a data em que a componente começou a ser utilizada.'/COMMENT ON COLUMN componentes.id_componente IS 'Campo que identifica a componente de uma determinada disciplina.'/COMMENT ON COLUMN componentes.id_disciplina IS 'Campo que identifica uma disciplina. Disciplinas com o mesmo nome mas de cursos diferentes, sao tratadas como disciplinas diferentes.'/COMMENT ON COLUMN componentes.id_motivo IS 'Campo que identifica o motivo tabelado para possiveis alteraçoes em diversas tabelas (departamentos, funcionarios, disciplinas,....)'/COMMENT ON COLUMN componentes.id_tipo_aula IS 'Campo que identifica o Tipo de aula.'/COMMENT ON COLUMN componentes.id_utilizador IS 'Campo que identifica o Utilizador.'/COMMENT ON COLUMN componentes.num_horas_componente IS 'Campo que identifica o numero de horas semanais da componente.'/COMMENT ON COLUMN componentes.obs_componente IS 'Campo referente a outras informaçoes relevantes referentes à componente.'/-- End of DDL Script for Table NOTHUNT.COMPONENTES-- Foreign KeyALTER TABLE componentesADD CONSTRAINT fk_componen_alterar_motivos FOREIGN KEY (id_motivo)REFERENCES motivos (id_motivo)/ALTER TABLE componentesADD CONSTRAINT fk_componen_com_def_p_utilizad FOREIGN KEY (id_utilizador)REFERENCES utilizadores (id_utilizador)/ALTER TABLE componentesADD CONSTRAINT fk_componen_modulo_co_tipo_aul FOREIGN KEY (id_tipo_aula)REFERENCES tipo_aulas (id_tipo_aula)/ALTER TABLE componentesADD CONSTRAINT fk_componen_tem_discipli FOREIGN KEY (id_disciplina)REFERENCES disciplinas (id_disciplina)/-- End of DDL script for Foreig Com o procedimento: PROCEDURE INSERE_COMPONENTE( INSINIDCOMPONENTE IN COMPONENTES.ID_COMPONENTE%TYPE, INSINIDTAULA IN COMPONENTES.ID_TIPO_AULA%TYPE, INSINIDDISCIPLINA IN COMPONENTES.ID_DISCIPLINA%TYPE, INSINIDUTILIZADOR IN COMPONENTES.ID_UTILIZADOR%TYPE, INSINIDMOTIVO IN COMPONENTES.ID_MOTIVO%TYPE, INSINNUMHCOMPONENTE IN COMPONENTES.NUM_HORAS_COMPONENTE%TYPE, INSINDINICOMPONENTE IN VARCHAR, INSINDUALCOMPONENTE IN VARCHAR, INSINDFIMCOMPONENTE IN VARCHAR, INSINOBSCOMPONENTE IN COMPONENTES.OBS_COMPONENTE%TYPE, DSCERRO OUT VARCHAR, CONTROLVAL OUT INT)ISCONTADORES INT;INSOINDINICOMPONENTE DATE;INSOINDUALTCOMPONENTE DATE;INSOINDFIMCOMPONENTE DATE;BEGINselect COUNT(*) into CONTADORES FROM COMPONENTES where COMPONENTES.ID_COMPONENTE = INSINIDCOMPONENTE;if CONTADORES > 0 then CONTROLVAL := -2; ELSEINSOINDINICOMPONENTE := TO_DATE(INSINDINICOMPONENTE , 'DD/MM/YYYY');INSOINDUALTCOMPONENTE := TO_DATE(INSINDUALCOMPONENTE , 'DD/MM/YYYY');INSOINDFIMCOMPONENTE := TO_DATE(INSINDFIMCOMPONENTE , 'DD/MM/YYYY'); INSERT INTO COMPONENTES( ID_COMPONENTE, ID_TIPO_AULA, ID_DISCIPLINA, ID_UTILIZADOR, ID_MOTIVO, NUM_HORAS_COMPONENTE, DATA_INICIO_COMPONENTE, DATA_U_ALTERACAO_COMPONENTE, DATA_FIM_COMPONENTE, OBS_COMPONENTE)VALUES( INSINIDCOMPONENTE, INSINIDTAULA, INSINIDDISCIPLINA, INSINIDUTILIZADOR, INSINIDMOTIVO, INSINNUMHCOMPONENTE, INSOINDINICOMPONENTE, INSOINDUALTCOMPONENTE, INSOINDFIMCOMPONENTE, INSINOBSCOMPONENTE); CONTROLVAL :=0; COMMIT;END IF; EXCEPTION WHEN ACCESS_INTO_NULL THEN DSCERRO:= 'ATRIBUTO NULO'; ROLLBACK; WHEN PROGRAM_ERROR THEN DSCERRO:= 'ERRO INTERNO'; ROLLBACK; WHEN LOGIN_DENIED THEN DSCERRO:= 'ACESSO INVALIDO'; ROLLBACK; WHEN NOT_LOGGED_ON THEN DSCERRO:= 'NÃO ESTÁ ESTABELECIDA UMA CONEXÃO'; ROLLBACK; WHEN OTHERS THEN DSCERRO:= 'OCORREU UM ERRO INESPERADO: '||SQLERRM; ROLLBACK;END; mas obtenho o resultado: ORA-01830: a imagem do formato de data termina antes de converter toda a cadeia de caracteres de entrada de dados como posso resolver a situação??abraço Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Maio 14, 2007 Parece ter um erro numa conversão de data , poste o código da procedure todo. Compartilhar este post Link para o post Compartilhar em outros sites