Como llamar un Store Procedure
Necesito ayuda para llamar a un store procedure en oracle, lo que hace este es insertar en una tabla un valor y retornar en una variable como le fue.
Procedimineto
create or replace procedure proc1 (param in varchar2, p2 out varchar2) is
begin
insert into tabla1 (col1)
values (param);
commit;
p2:= 'OK';
end;
/
Como es la llamada desde Java. Estioy usando JBuilder?
He probado la coneccion a la base y anda bien, tambien funciona si uno asigna esa coneccion a una grilla y trae una tabla con un select * from tabla1
Lo que no puedo hacer es ejecutar un store procedure.
Aca esta lo que intente hacer en java.
//Component initialization
private void jbInit() throws Exception {
database1.setConnection(new com.borland.dx.sql.dataset.ConnectionDescriptor("jdbc:oracle:thin:@linuxdbs:1521:crm", "crm", "crm", false, "oracle.jdbc.driver.OracleDriver"));
database1.setDatabaseName("");
//parametros
param.setCaption("param");
param.setColumnName("param");
param.setDataType(com.borland.dx.dataset.Variant.STRING);
param.setDefault("INSERTO_HOLA_MUNDO");
param.setPreferredOrdinal(1);
param.setServerColumnName("param");
param.setSqlType(0);
parameterRow1.setColumns(new Column[] {param});
//Procedure Data Set
procedureDataSet1.setProcedure(new com.borland.dx.sql.dataset.ProcedureDescriptor(database1, "call pepe(?,?)", parameterRow1, true, Load.ALL));
//No me anda la llamada
//Ni tampoco se como tomar la variable de salida
}
Alguien podria ayudarme?
Procedimineto
create or replace procedure proc1 (param in varchar2, p2 out varchar2) is
begin
insert into tabla1 (col1)
values (param);
commit;
p2:= 'OK';
end;
/
Como es la llamada desde Java. Estioy usando JBuilder?
He probado la coneccion a la base y anda bien, tambien funciona si uno asigna esa coneccion a una grilla y trae una tabla con un select * from tabla1
Lo que no puedo hacer es ejecutar un store procedure.
Aca esta lo que intente hacer en java.
//Component initialization
private void jbInit() throws Exception {
database1.setConnection(new com.borland.dx.sql.dataset.ConnectionDescriptor("jdbc:oracle:thin:@linuxdbs:1521:crm", "crm", "crm", false, "oracle.jdbc.driver.OracleDriver"));
database1.setDatabaseName("");
//parametros
param.setCaption("param");
param.setColumnName("param");
param.setDataType(com.borland.dx.dataset.Variant.STRING);
param.setDefault("INSERTO_HOLA_MUNDO");
param.setPreferredOrdinal(1);
param.setServerColumnName("param");
param.setSqlType(0);
parameterRow1.setColumns(new Column[] {param});
//Procedure Data Set
procedureDataSet1.setProcedure(new com.borland.dx.sql.dataset.ProcedureDescriptor(database1, "call pepe(?,?)", parameterRow1, true, Load.ALL));
//No me anda la llamada
//Ni tampoco se como tomar la variable de salida
}
Alguien podria ayudarme?
Yo llamo al procedimiento asi:
Connection conexion ;
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
conexion = DriverManager.getConnection("jdbc:microsoft:sqlserver://Informatica2:1433;DatabaseName=Ortus-Nomina", "sa", "");
CallableStatement llamadaprocedi = conexion.prepareCall("percepciones");
resultado = llamadaprocedi.executeQuery();
// Statement sentencia = conexion.createStatement();
//resultado = sentencia.executeQuery("prueba @atributos = Nombre_Empresa");
}
catch (Exception e){
System.out.println("Error: "+e.getMessage());
}
a ver si te sirve!!
Connection conexion ;
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
conexion = DriverManager.getConnection("jdbc:microsoft:sqlserver://Informatica2:1433;DatabaseName=Ortus-Nomina", "sa", "");
CallableStatement llamadaprocedi = conexion.prepareCall("percepciones");
resultado = llamadaprocedi.executeQuery();
// Statement sentencia = conexion.createStatement();
//resultado = sentencia.executeQuery("prueba @atributos = Nombre_Empresa");
}
catch (Exception e){
System.out.println("Error: "+e.getMessage());
}
a ver si te sirve!!
