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