Problemas com bases de dados

0 respostas
N

Pessoal,
tenho um problema que necessita de resolução com eextrema urgência.

Estou a tentar inserir dados numa base de dados com o seguinte codigo jsp:
%

                    
                    String txtINNDept= "Matemática";
                    String txtINDataINI="1999/02/20";
                    String txtINObject= "textAreaDept";
                    

                  
                        
                        String ERRORNUMBER=" ";
                        String ERRORSEVERITY=" ";
                        String ERRORSTATE=" ";
                        String ERRORPROCEDURE=" ";
                        String ERRORLINE=" ";
                        String ERRORMESSAGE=" ";
                        
                        

                       
                        
                        


                            java.sql.Connection conn_insDEPTTSQL = null;
                            java.sql.Connection conn_insDEPTPLSQL = null;
                            java.sql.Connection conn_idDEPTTSQL = null;
                            java.sql.Connection conn_idDEPTPLSQL = null;
                            
                    
                    
                    int sqlidTSQL =0;
                    int sqlidPLSQL =0;
                    String dscerro =" ";
                    int controlval=0;
                    int id_user=1;
                    int id_motiv=99;
                    

                    try{

                    

                    Class.forName("oracle.jdbc.driver.OracleDriver");
                    conn_idDEPTTSQL = DriverManager.getConnection("jdbc:oracle:thin:@RAGE:1521:NOPROBLE","Nothunt","anop270606");
                    CallableStatement cs_idDEPTTSQL = conn_idDEPTTSQL.prepareCall("{call OBTEM_NUM_DEPARTAMENTOS(?,?,?)}");
                    
                    cs_idDEPTTSQL.registerOutParameter(1,Types.NUMERIC);
                    cs_idDEPTTSQL.registerOutParameter(2,Types.VARCHAR);
                    cs_idDEPTTSQL.registerOutParameter(3,Types.NUMERIC);
                    
                    cs_idDEPTTSQL.execute(); 

                    sqlidPLSQL = cs_idDEPTTSQL.getInt(1);
                    
                    sqlidPLSQL = sqlidPLSQL+1;
                    
                    out.println("resgitos: "+sqlidPLSQL);
                    
                    
                    Class.forName("oracle.jdbc.driver.OracleDriver");
                    conn_insDEPTPLSQL = DriverManager.getConnection("jdbc:oracle:thin:@RAGE:1521:NOPROBLE","Nothunt","anop270606");
                    CallableStatement cs_insDEPTPLSQL = conn_insDEPTPLSQL.prepareCall("{call INSERE_DEPARTAMENTO(?,?,?,?,?,?,?,?,?,?)}");
                    
                    cs_insDEPTPLSQL.setInt(1,sqlidPLSQL);
                    cs_insDEPTPLSQL.setInt(2,id_user);
                    cs_insDEPTPLSQL.setInt(3,id_motiv);
                    cs_insDEPTPLSQL.setString(4,txtINNDept);
                    cs_insDEPTPLSQL.setString(5,txtINDataINI);
                    cs_insDEPTPLSQL.setString(6,txtINDataINI);
                    cs_insDEPTPLSQL.setString(7,txtINDataINI);
                    cs_insDEPTPLSQL.setString(8,txtINObject);
                    cs_insDEPTPLSQL.registerOutParameter(9,Types.VARCHAR);
                    cs_insDEPTPLSQL.registerOutParameter(10,Types.NUMERIC);
                    
                    cs_insDEPTPLSQL.execute();
                    
                    
                    dscerro = (String) cs_insDEPTPLSQL.getObject(9);
                    controlval= cs_insDEPTPLSQL.getInt(10);
                    
                    if (controlval !=0){
                    out.println("O Sistema devolveu um erro");
                    out.println("Código: "+controlval);
                    out.println("Mensagem: "+dscerro);
                    
                    }
                    
                    else if (controlval ==0){
                    out.println("o Registo foi inserido com sucesso");
                    }
                    
                    } catch(Exception e){
                    if (e.getMessage()!=null){
                    out.println(e.getClass().getName() + ":\n  " + e.getMessage());}
                    
                    }
                    
                    

                %>
com os seguintes procedimentos: 1.
PROCEDURE NOTHUNT.OBTEM_NUM_DEPARTAMENTOS 
(

    OBTOUTNUMDEPARTAMENTO           OUT INTEGER,
    DSCERRO		     		        OUT VARCHAR,
    CONTROLVAL				 	    OUT INTEGER

)
IS
BEGIN




  SELECT COUNT(DEPARTAMENTOS.ID_DEPARTAMENTO) INTO OBTOUTNUMDEPARTAMENTO FROM DEPARTAMENTOS;

    CONTROLVAL :=0;




EXCEPTION
   WHEN NO_DATA_FOUND THEN
      DSCERRO:= 'NENHUMA INFORMAÇÃO ENCONTRADA PARA O PARÂMETRO INSERIDO';
      ROLLBACK;
   WHEN LOGIN_DENIED THEN
      DSCERRO:= 'ACESSO INVALIDO';
      ROLLBACK;
   WHEN NOT_LOGGED_ON THEN
      DSCERRO:= 'NÃO  UMA CONEXÃO ESTABELECIDA';
      ROLLBACK;
   WHEN TOO_MANY_ROWS THEN
      DSCERRO:= 'MAIS DE UM REGISTO FOI ENCONTRADO';
      ROLLBACK;
   WHEN OTHERS THEN
      DSCERRO:= 'OCORREU UM ERRO INESPERADO: '||SQLERRM;
	  ROLLBACK;


END;
2.
PROCEDURE NOTHUNT.INSERE_DEPARTAMENTO 
(
  INSINIDDEPARTAMENTO           IN DEPARTAMENTOS.ID_DEPARTAMENTO%TYPE,
  INSINIDUTILIZADOR             IN DEPARTAMENTOS.ID_UTILIZADOR%TYPE,
  INSINIDMOTIVO                 IN DEPARTAMENTOS.ID_MOTIVO%TYPE,
  INSINDESDEPARTAMENTO          IN DEPARTAMENTOS.NOME_DEPARTAMENTO%TYPE,
  INSINIDEPARTAMENTO         IN VARCHAR,
  INSUALTDEPARTAMENTO        IN VARCHAR,
  INSFIMDEPARTAMENTO         IN VARCHAR,
  INSINOBSDEPARTAMENTO          IN DEPARTAMENTOS.OBS_DEPARTAMENTO%TYPE,
  DSCERRO                	 OUT 	VARCHAR,
  CONTROLVAL				 OUT	INT
)
IS

CONTADORES INT;

INSINDINIDEPARTAMENTO         DATE;
INSINDUALTDEPARTAMENTO        DATE;
INSINDFIMDEPARTAMENTO         DATE;

BEGIN

select
		COUNT(*) into CONTADORES
	FROM
		DEPARTAMENTOS
	where
		DEPARTAMENTOS.ID_DEPARTAMENTO = INSINIDDEPARTAMENTO;

if CONTADORES > 0 then
	 CONTROLVAL := -2;
	 DSCERRO:= 'O REGISTO QUE TENTA INSERIR  EXISTE';
ELSE

INSINDINIDEPARTAMENTO := TO_DATE(INSINIDEPARTAMENTO , 'YYYY/MM/DD');
INSINDUALTDEPARTAMENTO := TO_DATE(INSINIDEPARTAMENTO , 'YYYY/MM/DD');
INSINDFIMDEPARTAMENTO := TO_DATE(INSINIDEPARTAMENTO , 'YYYY/MM/DD');


 INSERT INTO
   DEPARTAMENTOS(
  ID_DEPARTAMENTO,
  ID_UTILIZADOR,
  ID_MOTIVO,
  NOME_DEPARTAMENTO,
  DATA_INICIO_DEPARTAMENTO,
  DATA_U_ALTERACAO_DEPARTAMENTO,
  DATA_FIM_DEPARTAMENTO,
  OBS_DEPARTAMENTO)
VALUES(
  INSINIDDEPARTAMENTO,
  INSINIDUTILIZADOR,
  INSINIDMOTIVO,
  INSINDESDEPARTAMENTO ,
  TO_DATE(INSINIDEPARTAMENTO , 'YYYY/MM/DD'),
  TO_DATE(INSINIDEPARTAMENTO , 'YYYY/MM/DD'),
  TO_DATE(INSINIDEPARTAMENTO , 'YYYY/MM/DD'),
  INSINOBSDEPARTAMENTO);
  
    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;

o que acontece é que o sistema uma mensagem indicando que os dados foram inseridos.
contudo qdo vou à base de dados a tabela está vazia.

podem ajudar-me? :roll:

um abraço

Criado 4 de março de 2007
Respostas 0
Participantes 1