Come visualizzare / verificare un risultato procedimento?
-
04-10-2019 - |
Domanda
qualcuno può spiegare come vedere i risultati di una procedura, tutto funziona bene e il codice è valido, eseguito e compilato senza errori. Ora come faccio a vedere i risultati come Query o nulla.
La procedura ex è circa dello stipendio.
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;
Soluzione
Per inviare i risultati di un'istruzione SELECT in una procedura è necessario utilizzare un cursore.
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;
quindi di usarlo, dichiarare il cursore, eseguire il proc, ed emettere i risultati.
variable records refcursor;
exec myproc(1, :records);
print :records;
(nessuna promessa che quanto sopra è sintatticamente perfetto -.. Sono lontano dal DB in questo momento, ma dovrebbe essere abbastanza vicino per arrivare nella giusta direzione)
Oh -. Ed è possibile utilizzare un tipo definito dall'utente cursore all'interno di un pacchetto, se questo è appropriato per l'ambiente
Altri suggerimenti
Stai usando questo in SQL * Plus? Hai "set serveroutput via;"?
Lo consiglio per questo una funzione
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;
L'utilizzo di questo è come:
select hr.TOTAL_SALARY() as total_sal from dual.