Frage

Kann jemand erklären, wie die Ergebnisse einer Prozedur, um zu sehen, alles funktioniert gut und der Code gültig ist, ausgeführt und ohne Fehler kompiliert. Nun, wie kann ich die Ergebnisse als Abfrage oder sonst etwas.

Das Ex-Verfahren ist etwa Summe des Gehalts.

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; 
War es hilfreich?

Lösung

die Ergebnisse einer select-Anweisung in einer Prozedur Zur Ausgabe benötigen Sie einen Cursor verwenden.

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;

dann, es zu benutzen, erklären Sie den Cursor, führen Sie die Prozedur, und geben die Ergebnisse.

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

(keine Versprechungen, dass die oben sind syntaktisch perfekt -.. Ich bin von der DB entfernt jetzt Aber es sollte nahe genug, um Sie in der richtigen Richtung zu bekommen)

Oh -. Und Sie können einen benutzerdefinierten Cursor-Typ innerhalb eines Pakets verwenden, wenn dies für Ihre Umgebung geeignet

Andere Tipps

Sind Sie mit dieser in SQL * Plus? Haben Sie "Set SERVER auf;"?

Ich empfehle für diese eine Funktion

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; 

Die Verwendung dafür ist, wie:

select hr.TOTAL_SALARY() as total_sal from dual.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top