pessoal aki vai o codigo:
o procedimento em SQL Server:
CREATE PROCEDURE dbo.INSERE_CURSO
(
@INSIDCURSO NUMERIC(2,0), -- 1
@INSIDMOTIVO NUMERIC(18,0), -- 2
@INSINIDULIZADOR NUMERIC(4,0), -- 3
@INSIDTCURSO NUMERIC(1,0), -- 4
@INSDESCCURSO VARCHAR(100), -- 5
@INSNUMANOSCURSO NUMERIC(1,0), -- 6
@INSINICIAISCURSO VARCHAR(5), -- 7
@INSDINICURSO VARCHAR(30), -- 8
@INSDUALCURSO VARCHAR(30), -- 9
@INSDFIMCURSO VARCHAR(30), -- 10
@INSOBSCURSO VARCHAR(500), -- 11
@ERRORNUMBER NUMERIC(18,0) OUTPUT, -- 12
@ERRORSEVERITY VARCHAR(100) OUTPUT, -- 13
@ERRORSTATE VARCHAR(100) OUTPUT, -- 14
@ERRORPROCEDURE VARCHAR(100) OUTPUT, -- 15
@ERRORLINE VARCHAR(100) OUTPUT, -- 16
@ERRORMESSAGE VARCHAR(100) OUTPUT -- 17
)
AS
BEGIN
BEGIN TRY
INSERT INTO
dbo.CURSOS(
ID_CURSO,
ID_MOTIVO,
ID_UTILIZADOR,
ID_TIPO_CURSO,
NOME_CURSO,
NUM_ANOS_CURSO,
INICIAIS_CURSO,
DATA_INICIO_CURSO,
DATA_U_ALTERACAO_CURSO,
DATA_FIM_CURSO,
OBS_CURSO)
VALUES(
@INSIDCURSO,
@INSIDMOTIVO,
@INSINIDULIZADOR,
@INSIDTCURSO,
@INSDESCCURSO,
@INSNUMANOSCURSO,
@INSINICIAISCURSO,
@INSDINICURSO,
@INSDUALCURSO,
@INSDFIMCURSO,
@INSOBSCURSO)
END TRY
BEGIN CATCH
SELECT
@ERRORNUMBER = ERROR_NUMBER(),
@ERRORSEVERITY = ERROR_SEVERITY(),
@ERRORSTATE = ERROR_STATE(),
@ERRORPROCEDURE = ERROR_PROCEDURE(),
@ERRORLINE = ERROR_LINE(),
@ERRORMESSAGE = ERROR_MESSAGE()
END CATCH;
END
o procedimento em Oracle:
PROCEDURE INSERE_CURSO
(
INSINIDCURSO IN CURSOS.ID_CURSO%TYPE, -- 1
INSINIDMOTIVO IN CURSOS.ID_MOTIVO%TYPE, -- 2
INSINIDUTILIZADOR IN CURSOS.ID_UTILIZADOR%TYPE, -- 3
INSINIDTCURSO IN CURSOS.ID_TIPO_CURSO%TYPE, -- 4
INSINDESCCURSO IN CURSOS.NOME_CURSO%TYPE, -- 5
INSINNUMANOSCURSO IN CURSOS.NUM_ANOS_CURSO%TYPE, -- 6
INSININICIAISCURSO IN CURSOS.INICIAIS_CURSO%TYPE, -- 7
INSINDINICURSO IN VARCHAR, -- 8
INSINDATAUALTCURSO IN VARCHAR, -- 9
INSINDFIMCURSO IN VARCHAR, -- 10
INSINOBSCURSO IN CURSOS.OBS_CURSO%TYPE, -- 11
DSCERRO OUT VARCHAR, -- 12
CONTROLVAL OUT INT -- 13
)
IS
CONTADORES INT;
BEGIN
select
COUNT(*) into CONTADORES
FROM
CURSOS
where
CURSOS.ID_CURSO = INSINIDCURSO;
if CONTADORES > 0 then
CONTROLVAL := -2;
ELSE
INSERT
INTO CURSOS(
ID_CURSO,
ID_MOTIVO,
ID_UTILIZADOR,
ID_TIPO_CURSO,
NOME_CURSO,
NUM_ANOS_CURSO,
INICIAIS_CURSO,
DATA_INICIO_CURSO,
DATA_U_ALTERACAO_CURSO,
DATA_FIM_CURSO,
OBS_CURSO)
VALUES(
INSINIDCURSO,
INSINIDUTILIZADOR,
INSINIDMOTIVO,
INSINIDTCURSO,
INSINDESCCURSO,
INSINNUMANOSCURSO,
INSININICIAISCURSO,
INSINDINICURSO,
INSINDATAUALTCURSO,
INSINDFIMCURSO,
INSINOBSCURSO);
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;
Aui a função para inserção no MS SQL Server:
public String[] INSCURS_MSSQL(String[] indept){
intusearray = CHECKIDCURS_MSSQL();
idCURS = Integer.valueOf(intusearray[1]).intValue();
idCURS = idCURS+1;
try{
Class.forName(drivermssql);
conn_insCURSTSQL = DriverManager.getConnection(constrmssql);
CallableStatement cs_insCURSTSQL= conn_insCURSTSQL.prepareCall("{call dbo.INSERE_CURSO(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}");
cs_insCURSTSQL.setInt(1,idCURS);//1
cs_insCURSTSQL.setInt(2,Integer.valueOf(indept[1]).intValue());//2
cs_insCURSTSQL.setInt(3,Integer.valueOf(indept[2]).intValue());//3
cs_insCURSTSQL.setInt(4,Integer.valueOf(indept[3]).intValue());//4
cs_insCURSTSQL.setString(5,indept[4]);//5
cs_insCURSTSQL.setInt(6,Integer.valueOf(indept[5]).intValue());//6
cs_insCURSTSQL.setString(7,indept[6]);//7
cs_insCURSTSQL.setString(8,indept[7]);//8
cs_insCURSTSQL.setString(9,indept[8]);//9
cs_insCURSTSQL.setString(10,indept[9]);//10
cs_insCURSTSQL.setString(11,indept[10]);//11
cs_insCURSTSQL.registerOutParameter(12,Types.NUMERIC);//12
cs_insCURSTSQL.registerOutParameter(13,Types.VARCHAR);//13
cs_insCURSTSQL.registerOutParameter(14,Types.VARCHAR);//14
cs_insCURSTSQL.registerOutParameter(15,Types.VARCHAR);//15
cs_insCURSTSQL.registerOutParameter(16,Types.VARCHAR);//16
cs_insCURSTSQL.registerOutParameter(17,Types.VARCHAR);//17
cs_insCURSTSQL.execute();
ERRORNUMBER=cs_insCURSTSQL.getInt(12);
ERRORSEVERITY=(String)cs_insCURSTSQL.getObject(13);
ERRORSTATE=(String)cs_insCURSTSQL.getObject(14);
ERRORPROCEDURE=(String)cs_insCURSTSQL.getObject(15);
ERRORLINE=(String)cs_insCURSTSQL.getObject(16);
ERRORMESSAGE=(String)cs_insCURSTSQL.getObject(17);
if (ERRORNUMBER != 0){
SETERROR_MSSQL(ERRORNUMBER,ERRORSEVERITY, ERRORSTATE,ERRORPROCEDURE,ERRORLINE,ERRORMESSAGE);
} else {java.util.Arrays.fill(errordatamssql,null);}
} catch(Exception e){
if (e.getMessage()!=null){
SETEXCEP_MSSQL(e.getMessage());}
}
return saida;
}
Aqui Para o Oracle:
public String[] INSCURS_ORASQL(String[] indept){
intusearray = CHECKIDCURS_ORASQL();
idCURS = Integer.valueOf(intusearray[1]).intValue();
idCURS = idCURS+1;
try{
Class.forName(driveroracle);
conn_insCURSPLSQL = DriverManager.getConnection(constroracle,useroracle,BDPass);
CallableStatement cs_insCURSPLSQL = conn_insCURSPLSQL.prepareCall("{call INSERE_CURSO(?,?,?,?,?,?,?,?,?,?,?,?,?)}");
cs_insCURSPLSQL.setInt(1,idCURS);//1
cs_insCURSPLSQL.setInt(2,Integer.valueOf(indept[1]).intValue());//2
cs_insCURSPLSQL.setInt(3,Integer.valueOf(indept[2]).intValue());//3
cs_insCURSPLSQL.setInt(4,Integer.valueOf(indept[3]).intValue());//4
cs_insCURSPLSQL.setString(5,indept[4]);//5
cs_insCURSPLSQL.setInt(6,Integer.valueOf(indept[5]).intValue());//6
cs_insCURSPLSQL.setString(7,indept[6]);//7
cs_insCURSPLSQL.setString(8,indept[7]);//8
cs_insCURSPLSQL.setString(9,indept[8]);//9
cs_insCURSPLSQL.setString(10,indept[9]);//10
cs_insCURSPLSQL.setString(11,indept[10]);//11
cs_insCURSPLSQL.registerOutParameter(12,Types.VARCHAR);
cs_insCURSPLSQL.registerOutParameter(13,Types.NUMERIC);
cs_insCURSPLSQL.execute();
dscerro = (String) cs_insCURSPLSQL.getObject(12);
controlval= cs_insCURSPLSQL.getInt(13);
if (controlval !=0){
SETERROR_ORASQL(controlval, dscerro);
} else {java.util.Arrays.fill(errordataoracle,null);}
} catch(Exception e){
if (e.getMessage()!=null){
SETEXCEP_ORASQL(e.getMessage());}
}
return saida;
}
E sim os campos para as datas estão em varchar(30).
que me dizem? :roll:
obrgidao