Wie Anzeigen / ein Verfahren Ergebnis verifizieren?
-
04-10-2019 - |
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;
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.