Saltar al contenido

Escribir un procedimiento almacenado SELECT simple en Oracle PL/SQL

Ya no necesitas investigar más por todo internet ya que llegaste al lugar justo, contamos con la respuesta que necesitas recibir y sin problema.

Solución:

Tienes que pasar en un REFCURSOR para que el procedimiento lo use como salida (OUT) parámetro.

Procedimiento rápido para probar con:

CREATE OR REPLACE PROCEDURE passenger_details
(p_passenger_details OUT SYS_REFCURSOR) 
AS 
BEGIN 
OPEN p_passenger_details FOR
SELECT 'test test' as Full_Name, 10 as Age, 'alien' as Nationality, 'foo' as Category, 
'Name' as Airline_Name, 'wobble' as Class_Type
FROM dual;
END passenger_details;
/

Prueba en SQL*Plus:

SQL> variable mycursor refcursor;
SQL> exec passenger_details ( :mycursor );

PL/SQL procedure successfully completed.

SQL> print mycursor;

FULL_NAME    AGE NATIO CAT AIRL CLASS_
--------- ---------- ----- --- ---- ------
test test     10 alien foo Name wobble

SQL>

Puedes usar dbms_sql para devolver resultados implícitos. Esta fue una función agregada a Oracle 12 para facilitar la migración desde SQL Server:

CREATE PROCEDURE passenger_details
AS
  c1 SYS_REFCURSOR;  
BEGIN

  open c1 for
  SELECT Full_Name, Age, Nationality, Category, Airline_Name, Class_Type
  FROM Passenger
    JOIN Ticket on Passenger.Passenger_No = Ticket.Passenger_No
    JOIN Airline ON Airline.Airline_No = Ticket.Airline_No
    JOIN Class ON Class.Class_No = Ticket.Class_No;

  DBMS_SQL.RETURN_RESULT(c1);
END;
/

Tenga en cuenta que reemplacé las uniones implícitas antiguas y obsoletas con un explícito JOIN operador.

Comentarios y calificaciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *