Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Meter cursor dentro de una funcion

Estas en el tema de Meter cursor dentro de una funcion en el foro de Oracle en Foros del Web. Hola esta es mi cursor .. tengo la necesidad de ejecutarlo mediante un objeto en este caso una funcion como lo pondria dentro de una ...
  #1 (permalink)  
Antiguo 04/12/2014, 11:27
 
Fecha de Ingreso: noviembre-2013
Mensajes: 28
Antigüedad: 10 años, 5 meses
Puntos: 0
Meter cursor dentro de una funcion

Hola esta es mi cursor .. tengo la necesidad de ejecutarlo mediante un objeto en este caso una funcion como lo pondria dentro de una y luego como lo llamaria.

Código SQL:
Ver original
  1. DECLARE
  2. CURSOR C1 IS SELECT ENAME,SAL,DEPTNO FROM EMP E2 WHERE SAL=(SELECT MAX(SAL) FROM EMP E1 WHERE E2.DEPTNO=E1.DEPTNO)ORDER BY DEPTNO;
  3. BEGIN
  4.       FOR I IN C1 LOOP
  5.       DBMS_OUTPUT.PUT_LINE('EMPLEADO: '||I.ENAME||'  SALARIO:'||I.SAL||' DEL DEPARTAMENTO: '||I.DEPTNO);
  6.       END LOOP;
  7. END;

Estoy trabajando con la BD SCOTT sobre la tabla EMP
  #2 (permalink)  
Antiguo 12/12/2014, 02:45
 
Fecha de Ingreso: junio-2013
Mensajes: 7
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Meter cursor dentro de una funcion

Qué tal Luis:

Si deseas utilizar una función, recuerda que debes retornar un valor. También lo puedes hacer a través de un procedimiento.

Te pongo un ejemplo muy simple de como utilizar un cursor dentro de un procedimiento almacenado.

Código SQL:
Ver original
  1. CREATE OR REPLACE PROCEDURE InfoEmpleados(
  2.     p_Trabajo       EMP.job%TYPE
  3. )
  4. AS
  5.     CURSOR c_Empleado IS SELECT deptno, ename, sal
  6.                          FROM EMP
  7.                          WHERE job = UPPER(p_Trabajo)
  8.                          ORDER BY deptno;
  9. BEGIN
  10.     FOR v_Empleado IN c_Empleado
  11.     LOOP
  12.         DBMS_OUTPUT.PUT_LINE('DEPTNO: ' || v_Empleado.deptno || ', NOMBRE: ' || v_Empleado.ename || ', SALARIO: ' || v_Empleado.sal);
  13.     END LOOP;
  14. END;
  15. /

Básicamente como parámetro recibe el tipo de trabajo (job) que realiza el empleado y en base a eso, muestra a todos los empleados que tienen ese trabajo.

Para ejecutar el procedimiento:

Código SQL:
Ver original
  1. SET SERVEROUTPUT ON
  2.  
  3. BEGIN
  4.     InfoEmpleados('SALESMAN');
  5. END;
  6. /

Saludos.

Etiquetas: cursor, funcion, meter, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:43.