Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

PL/SQL - Programmierung von Programmeinheiten. © Prof. T. Kudraß, HTWK Leipzig Gespeicherte Prozeduren – Eine Prozedur ist ein benannter PL/SQL Block,

Ähnliche Präsentationen


Präsentation zum Thema: "PL/SQL - Programmierung von Programmeinheiten. © Prof. T. Kudraß, HTWK Leipzig Gespeicherte Prozeduren – Eine Prozedur ist ein benannter PL/SQL Block,"—  Präsentation transkript:

1 PL/SQL - Programmierung von Programmeinheiten

2 © Prof. T. Kudraß, HTWK Leipzig Gespeicherte Prozeduren – Eine Prozedur ist ein benannter PL/SQL Block, der eine Aktion ausführt. – Eine Prozedur kann in der Datenbank gespeichert sein als Datenbankobjekt zur wiederholten Ausführung.

3 © Prof. T. Kudraß, HTWK Leipzig Syntax zum Erzeugen von Prozeduren CREATE [OR REPLACE] PROCEDURE procedure_name (argument1 [mode1] datatype1, argument2 [mode2] datatype2,... IS [AS] PL/SQL Block; CREATE [OR REPLACE] PROCEDURE procedure_name (argument1 [mode1] datatype1, argument2 [mode2] datatype2,... IS [AS] PL/SQL Block;

4 © Prof. T. Kudraß, HTWK Leipzig Entwicklung von Prozeduren/Funktionen Text file Source Code P-Code Editieren Speichern in Datenbank Compile Execute 1 2 System editor OracleProcedureBuilder

5 © Prof. T. Kudraß, HTWK Leipzig Parameter-Modi IN OUT Muß bekannt sein Wert zum Subpro- gramm übermittelt; Rückgabe an Aufrufumgebung Initialisierte Variable Muß Variable sein OUT Muß bekannt sein Rückgabe an Aufrufumgebung Uninitialisierte Variable Muß Variable sein IN Default Wert wird zum Subprogram übermittelt Formaler Parameter wie Konstante Aktueller Parameter: Literal, Ausdruck, Kon- stante, init.Variable

6 © Prof. T. Kudraß, HTWK Leipzig IN-Parameter: Beispiel SQL> CREATE OR REPLACE PROCEDURE raise_salary 2 (v_id in emp.empno%TYPE) 3 IS 4 BEGIN 5UPDATE emp 6SET sal = sal * 1.10 7WHERE empno = v_id; 8 END raise_salary; 9 / Procedure created. SQL> EXECUTE raise_salary (7369) PL/SQL procedure successfully completed. SQL> CREATE OR REPLACE PROCEDURE raise_salary 2 (v_id in emp.empno%TYPE) 3 IS 4 BEGIN 5UPDATE emp 6SET sal = sal * 1.10 7WHERE empno = v_id; 8 END raise_salary; 9 / Procedure created. SQL> EXECUTE raise_salary (7369) PL/SQL procedure successfully completed. v_id7369

7 © Prof. T. Kudraß, HTWK Leipzig OUT-Parameter: Beispiel SQL> CREATE OR REPLACE PROCEDURE query_emp 1 (v_id INemp.empno%TYPE, 2 v_name OUTemp.ename%TYPE, 3 v_salary OUTemp.sal%TYPE, 4 v_comm OUTemp.comm%TYPE) 5 IS 6 BEGIN 7 SELECT ename, sal, comm 8 INTO v_name, v_salary, v_comm 9 FROM emp 10 WHERE empno = v_id; 11 END query_emp; 12 / SQL> CREATE OR REPLACE PROCEDURE query_emp 1 (v_id INemp.empno%TYPE, 2 v_name OUTemp.ename%TYPE, 3 v_salary OUTemp.sal%TYPE, 4 v_comm OUTemp.comm%TYPE) 5 IS 6 BEGIN 7 SELECT ename, sal, comm 8 INTO v_name, v_salary, v_comm 9 FROM emp 10 WHERE empno = v_id; 11 END query_emp; 12 /

8 © Prof. T. Kudraß, HTWK Leipzig OUT-Parameter und SQL*Plus SQL> START emp_query.sql Procedure created. SQL> START emp_query.sql Procedure created. SQL> VARIABLE g_namevarchar2(15) SQL> VARIABLE g_salarynumber SQL> VARIABLE g_commnumber SQL> VARIABLE g_namevarchar2(15) SQL> VARIABLE g_salarynumber SQL> VARIABLE g_commnumber SQL> EXECUTE query_emp (7654, :g_name, :g_salary, 2 :g_comm) PL/SQL procedure successfully completed. SQL> EXECUTE query_emp (7654, :g_name, :g_salary, 2 :g_comm) PL/SQL procedure successfully completed. SQL> PRINT g_name G_NAME --------------- MARTIN SQL> PRINT g_name G_NAME --------------- MARTIN

9 © Prof. T. Kudraß, HTWK Leipzig Parameter Passing Position Namen Kombination aus beiden

10 © Prof. T. Kudraß, HTWK Leipzig Parameter Passing (Beispielprozedur) SQL> CREATE OR REPLACE PROCEDURE add_dept 1 (v_name IN dept.dname%TYPE DEFAULT 'unknown', 2 v_loc IN dept.loc%TYPE DEFAULT 'unknown') 3 IS 4 BEGIN 5 INSERT INTO dept 6 VALUES (dept_deptno.NEXTVAL, v_name, v_loc); 7 END add_dept; 8 / SQL> CREATE OR REPLACE PROCEDURE add_dept 1 (v_name IN dept.dname%TYPE DEFAULT 'unknown', 2 v_loc IN dept.loc%TYPE DEFAULT 'unknown') 3 IS 4 BEGIN 5 INSERT INTO dept 6 VALUES (dept_deptno.NEXTVAL, v_name, v_loc); 7 END add_dept; 8 /

11 © Prof. T. Kudraß, HTWK Leipzig Parameter Passing (Beispiele) SQL> begin 2 add_dept; 3 add_dept ( 'TRAINING', 'NEW YORK'); 4 add_dept ( v_loc => 'DALLAS', v_name => 'EDUCATION') ; 5 add_dept ( v_loc => 'BOSTON') ; 6 end; 7 / PL/SQL procedure successfully completed. SQL> begin 2 add_dept; 3 add_dept ( 'TRAINING', 'NEW YORK'); 4 add_dept ( v_loc => 'DALLAS', v_name => 'EDUCATION') ; 5 add_dept ( v_loc => 'BOSTON') ; 6 end; 7 / PL/SQL procedure successfully completed. SQL>SELECT * FROM dept; DEPTNODNAMELOC ---------------------------------......... 41unknownunknown 42TRAININGNEW YORK 43EDUCATIONDALLAS 44 unknownBOSTON SQL>SELECT * FROM dept; DEPTNODNAMELOC ---------------------------------......... 41unknownunknown 42TRAININGNEW YORK 43EDUCATIONDALLAS 44 unknownBOSTON

12 © Prof. T. Kudraß, HTWK Leipzig Löschen von Prozeduren Mit SQL*Plus: Drop der serverseitigen Prozedur Beispiel Syntax DROP PROCEDURE procedure_name SQL> DROP PROCEDURE raise_salary; Procedure dropped. SQL> DROP PROCEDURE raise_salary; Procedure dropped. Mit Procedure Builder: Drop clientseitige oder serverseitige Prozedur

13 © Prof. T. Kudraß, HTWK Leipzig Zusammenfassung Prozeduren Eine Prozedur ist ein benannter PL/SQL Block, der eine Aktion ausführt. Parameter zum Übermitteln der Daten von der Aufrufumgebung zur Prozedur. Prozeduren können von jedem Tool oder Sprache aufgerufen werden, die PL/SQL unterstützen. Prozeduren können als Bausteine für eine Applikation dienen.


Herunterladen ppt "PL/SQL - Programmierung von Programmeinheiten. © Prof. T. Kudraß, HTWK Leipzig Gespeicherte Prozeduren – Eine Prozedur ist ein benannter PL/SQL Block,"

Ähnliche Präsentationen


Google-Anzeigen