Oracle - Stored Procedures que devuelva una variable

 
Vista:

Stored Procedures que devuelva una variable

Publicado por JOAQUIN (4 intervenciones) el 16/11/2005 18:03:58
Señores del foro,
Tengo un problemita, quiza pequeño para muchos de ustedes, y es el siguiente:

Trabajo en una migración de SQL server a Oracle, en los stored procedures de SQL basta con poner un" Select @nombreVariable" al final del procedimiento y al ejecutarlo me devuelve el valor de la variable...

Como hago hago esto mismo en Oracle, el procedimiento me tiene que devolver una variable, pero no en el DBMS con DBMS.OUTPUT.PU_LINE...

Trabajo con una aplicación de Java Servlet, y ejecuto en procedimiento con:
executeQuery(BEGIN Procedimiento(VAR1, VAR2); END;);

si hace el procedimiento, pero no devuelve la variable.....

QUE HAGO.....

MUCHAS GRACIAS DE ANTEMANO.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Stored Procedures que devuelva una variable

Publicado por Jesús de Diego (31 intervenciones) el 16/11/2005 18:50:01
Prueba con
select Procedimiento(VAR1, VAR2) from dual;
Saludos

Jesús de Diego
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Stored Procedures que devuelva una variable

Publicado por Jesús de Diego Alarcón (31 intervenciones) el 16/11/2005 18:55:06
Se me olvidaba.
El procedimiento almacenado debe ser una función para que devuelva un valor.
Saludos de nuevo
JEsús de Diego
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Stored Procedures que devuelva una variable

Publicado por JOAQUIN (4 intervenciones) el 16/11/2005 19:39:15
Gracias Diego, ya habia probado con funciones, y si ... funciona, pero las funciones no permiten consultas de Acción (INSERT, UPDATE, DELETE)...

Pero muchas gracias por la sugerencia...

Encontre como hacerlo con java.... les doy un trozo de codigo para que tengan una idea, si les sirve.... muchas gracias.

import java.sql.*;
public class JavaProcExample {
public static void main(String[] args)
throws SQLException {
int ret_code;
Connection conn = null;
try {
//Load and register Oracle driver
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
//Establish a connection

conn = DriverManager.getConnection("jdbc:oracle:thin:@training:1521:
Oracle", "oratest", "oratest");
int i_empno = 1002;
CallableStatement pstmt =
conn.prepareCall("{call pkg_empmaster.fire_emp(?)}");
pstmt.setInt(1, i_empno);
pstmt.executeUpdate();

pstmt.close();
conn.close();
} catch (SQLException e) {ret_code = e.getErrorCode();
System.err.println(ret_code + e.getMessage()); conn.close();}
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Stored Procedures que devuelva una variable

Publicado por JOAQUIN (4 intervenciones) el 16/11/2005 19:41:51
upsss... perdon faltaba como recuperar los datos que devuelve el procedimiento, eso es asi:

import java.sql.*;

public class StProcExample {
public static void main(String[] args)
throws SQLException {
int ret_code;
Connection conn = null;
try {
//Load and register Oracle driver
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
//Establish a connection

conn = DriverManager.getConnection("jdbc:oracle:thin:@training:1521:
Oracle", "oratest", "oratest");
int i_deptno = 10;
CallableStatement pstmt = conn.prepareCall("{call p_highest_
paid_emp(?,?,?,?)}");
pstmt.setInt(1, i_deptno);
pstmt.registerOutParameter(2, Types.INTEGER);
pstmt.registerOutParameter(3, Types.VARCHAR);
pstmt.registerOutParameter(4, Types.FLOAT);
pstmt.executeUpdate();

int o_empno = pstmt.getInt(2);
String o_ename = pstmt.getString(3);
float o_sal = pstmt.getFloat(4);
System.out.print("The highest paid employee in dept "
+i_deptno+" is: "+o_empno+" "+o_ename+" "+o_sal);
pstmt.close();
conn.close();
} catch (SQLException e) {ret_code = e.getErrorCode();
System.err.println(ret_code + e.getMessage()); conn.close();}
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Stored Procedures que devuelva una variable

Publicado por JSL (186 intervenciones) el 16/11/2005 19:49:16
CREATE or replace FUNCTION SUMA ( a number, b number) return number is
begin
return a+b;
end;
/

select suma ( 8,3) from dual
/


Elapsed: 00:00:00.02
13:01:23 SQL> CREATE FUNCTION SUMA ( a number, b number) return number is
13:05:07 2 begin
13:05:07 3 return a+b;
13:05:07 4 end;
13:05:07 5 /

Function created.

Elapsed: 00:00:00.00
13:05:09 SQL> select suma(5,3) from dual;

SUMA(5,3)
----------
8

Elapsed: 00:00:00.01
13:05:17 SQL>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar