Oracle - Stored Procedure en Oracle

 
Vista:

Stored Procedure en Oracle

Publicado por Margot (1 intervención) el 22/11/2005 18:26:45
Buenas tardes:
Necesito saber si dado un select como este:
SELECT * FROM TABLE que me devuelve varios registros, Cómo es la sintaxis si lo quiero meter en un Stored Procedure????
Gracias de antemano

Saludos.
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 Procedure en Oracle

Publicado por Jesús de Diego Alarcón (31 intervenciones) el 22/11/2005 18:52:52
Hola Margot

Puedes hacerlo con un cursor. Debes declararlo
CURSOR MICURSOR IS SELECT * FROM NOMBRETABLA
y después abrirlo:
OPEN MICURSOR;
LOOP
FETCH .....
EXIT WHEN MICURSOR%NOTFOUND;
...
END LOOP;
CLOSE;

Puedes buscar un montón de ejemplos en internet.
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 Procedure en Oracle

Publicado por Alex Salamanca (1 intervención) el 22/11/2005 23:34:01
hola margot:

Aqui te envio como lo hago yo para lo de usar procedimientos almacenados en el oracle:

--Lo primero es crear un cursor de referencia,
--en este caso se llama "cur" (original no?)
--el cual lo puedes usar en todos tus procedimientos

CREATE OR REPLACE PACKAGE "COMERCIAL"."PAQ" as
TYPE cur IS REF CURSOR;
end;




--Despues de esto creas un procedimiento almacenado con
--pàrametros si es que debe tenerlos. (El tercer parametro debe tenerlo oblig...)
CREATE OR REPLACE PROCEDURE "COMERCIAL"."P_IDENTIFICACION" (
rut in number, --opcional dependiendo de la consulta
contrasena in varchar, --opcional dependiendo de la consulta
cur out paq.cur --obligatorio ya que es el cursor que se va a entregar...
)
as
begin
OPEN cur FOR
SELECT COUNT(*) AS CUENTA
FROM COMERCIAL.T_USUARIOS
WHERE (USU_RUT = rut) AND (USU_CONTRASENA = contrasena);
end;




--ahora para probar esto por ejemplo en el sql plus

SQL> VAR R REFCURSOR;
SQL> EXEC COMERCIAL.P_IDENTIFICACION(15184779, 'salaespi', :R);

Procedimiento PL/SQL terminado correctamente. --Esto lo arroja el sql plus si todo bien

SQL> PRINT R;

CUENTA
----------
1

SQL>



--por otro lado si quieres saber la tabla de este ejemplo contiene 3 campos:
--usu_rut (de tipo numerico no nulo y clave principal)
--usu_nombre (de tipo varchar2 de longitud 30 no nulo)
--usu_contrasena (de tipo varchar2 de longitud 9 no nulo)


PD: De donde eres Margot...
Cualquier duda me escribes al mail: [email protected], [email protected]


Saludos
Alex - Chile
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