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; 
È stato utile?

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.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top