Cómo ver / verificar consecuencia procedimiento?
-
04-10-2019 - |
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;
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.