Pregunta

Puede alguien explicar cómo ver los resultados de un procedimiento, todo está funcionando bien y el código es válido, ejecutado y compilado sin errores. Ahora ¿cómo puedo ver los resultados como consulta o nada.

El procedimiento ex se trata suma de salario.

CREATE OR REPLACE PROCEDURE HR.TOTAL_SALARY AS    
   total_salary NUMBER(12,2);    
BEGIN    

  SET TRANSACTION READ ONLY;    

  SELECT SUM (salary) 
    INTO total_salary 
    FROM employees;    

  DBMS_OUTPUT.PUT_LINE('Total salary 1: ' || total_salary);     
  COMMIT;    

END; 
¿Fue útil?

Solución

A la salida de los resultados de una instrucción SELECT en un procedimiento que necesita utilizar un cursor.

create procedure myproc 
(in_variable IN number, out_records OUT sys_refcursor)
as
begin
open out_records for

select * from mytable
where column = in_variable;

end;

a continuación, para usarlo, declarar el cursor, ejecutar el proc, y la salida de los resultados.

variable records refcursor;
exec myproc(1, :records);
print :records;

(no hay promesas que lo anterior es sintácticamente perfecta -.. Estoy lejos de la base de datos en este momento, pero debe ser lo suficientemente cerca para conseguir que en la dirección correcta)

Oh -. Y se puede utilizar un tipo de cursor en el interior definida por el usuario de un paquete, si eso es adecuado para su entorno

Otros consejos

¿Está ejecutando en SQL * Plus? ¿Ha "conjunto de serveroutput;"?

recomiendo para esta función

CREATE OR REPLACE FUNCTION HR.TOTAL_SALARY return number AS    
   total_salary NUMBER(12,2);    
BEGIN    

  SELECT SUM (salary) 
    INTO total_salary 
    FROM employees;    

return total_salary;

END; 

El uso de esto es como:

select hr.TOTAL_SALARY() as total_sal from dual.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top