Problemas com bases de dados

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:

[code]
%

                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());}
                
                }
                
                

            %> [/code]

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 HÁ 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;[/code]

2.[code]

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 JÁ 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