
PL/SQL PL/SQL is Oracle's procedural language extension to SQL. PL/SQL combines SQL with the procedural Database Procedural Programming functionality of a structured programming PL/SQL and Embedded SQL language, such as IF ... THEN, WHILE, and LOOP. The PL/SQL engine used to define, compile, CS2312 and execute PL/SQL program units. A component of many Oracle products, including Oracle Server. Procedures and Functions Procedure PL/SQL Example CREATE PROCEDURE credit_labmark (sno NUMBER, cno CHAR, credit NUMBER) AS A set of SQL and PL/SQL statements grouped together as a old_mark NUMBER; unit (block) to solve a specific problem or perform a set of new_mark NUMBER; Locks enrol related tasks. BEGIN An anonymous block is a PL/SQL block that appears within SELECT labmark INTO old_mark FROM enrol your application and it is not named or stored in the WHERE studno = sno and courseno = cno FOR UPDATE OF database. In many applications, PL/SQL blocks can appear labmark; new_ mark := old_ mark + credit; wherever SQL statements can appear. SQL statement. UPDATE enrol SET labmark = new_mark A stored procedure is a PL/SQL block that Oracle stores in WHERE studno = sno and courseno = cno; the database and can be called by name from an COMMIT; EXECUTE PL/SQL application. EXCEPTION credit_labmark statement. (99234,’CS2312’,20) Functions always return a single value to the caller; WHEN NO_DATA_FOUND THEN procedures do not return values to the caller. INSERT INTO enrol(studno, courseno, labmark, exammark) VALUES(sno, cno, credit, null); Packages are groups of procedures and functions. WHEN OTHERS THEN ROLLBACK; END credit_labmark; Function Stored Procedures create function get_lab_mark(sno number, cno char) Created in a user's schema and Program code return number stored, centrally, in compiled . as f_lab_mark number; form in the database as a . Stored no_mark exception; Program code named object that can be: . Procedure begin interactively executed by a user HIRE_EMP(…); select labmark .Program code using a tool like SQL*Plus into f_lab_mark from enrol Program code. HIRE_EMP(…) called explicitly in the code of a . where studno = sno and courseno = cno; BEGIN database application, such as an Program code if f_lab_mark is null . Oracle Forms or a Pre compiler . HIRE_EMP(…); then raise no_mark; application, or in the code of END; else return(f_lab_mark); another procedure or trigger Program code. .Program code end if When PL/SQL is not stored in the . exception database, applications can Program code when no_mark then …..return(null); . send blocks of PL/SQL to the HIRE_EMP(…); end; . database rather than individual Database SQL statements → reducing Program code network traffic. Database Applications 1 Architecture Benefits of Stored Procedures I Oracle Server Security Control data access through procedures and functions. Database SGA PL/SQL Engine E.g. grant users access to a procedure that updates a table, but not grant them access to the table itself. Application Procedural Procedure Statement Begin Performance Program code Procedurecall Executor Program code Procedurecall The information is sent only once between database and Procedure call SQL SQL application and thereafter invoked when it is used. Program code Procedurecall Network traffic is reduced compared with issuing Program code SQL individual SQL statements or sending the text of an End; SQL Statement entire PL/SQL block Executor A procedure's compiled form is readily available in the database, so no compilation is required at execution time. The procedure might be cached Database Benefits of Procedures II Benefits of Procedures III Memory Allocation Integrity Stored procedures take advantage of the shared memory Stored procedures improve the integrity and capabilities of Oracle Only a single copy of the procedure needs to be loaded into consistency of your applications. By developing all of memory for execution by multiple users. your applications around a common group of procedures, you can reduce the likelihood of committing Productivity coding errors. By designing applications around a common set of procedures, you You can test a procedure or function to guarantee that it can avoid redundant coding and increase your productivity. returns an accurate result and, once it is verified, reuse Procedures can be written to insert, update, or delete rows from a table and then called by any application without rewriting the SQL it in any number of applications without testing it again. statements necessary to accomplish these tasks. If the data structures referenced by the procedure are If the methods of data management change, only the procedures altered in any way, only the procedure needs to be need to be modified, not all of the applications that use the procedures. recompiled; applications that call the procedure do not necessarily require any modifications. Packages Package manage tasks in database A method of encapsulating and storing related Database applications Program code FIRE_EMP(…) procedures, functions, variables, cursors and other . BEGIN explicitly call packaged package constructs together as a unit in the database EMP_MGMT.FIRE_EMP(…); . procedures as necessary. Program code . for continued use as a unit. END; After being granted the Similar to standalone procedures and functions, EMP_MGMT.HIRE_EMP(…); privileges for the package, . a user can explicitly packaged procedures and functions can be called Program code HIRE_EMP(…) explicitly by applications or users. BEGIN execute any of the . procedures contained in it. Organize routines . Program code EXECUTE marks_mgmt. Increased functionality (e.g. global package . END; variables can be declared and used by any EMP_MGMT.HIRE_EMP(…); credit_labmark(99234,’CS2 Program code SAL_RAISE(…) 312’,20) procedure in the package) and . BEGIN . Packages offer several Increased performance (e.g. all objects of the EMP_MGMT.SAL_RAISE(…); . development and package are parsed, compiled, and loaded into Program code END; memory once). performance advantages over standalone stored procedures; Database 2 Benefits of Packages Triggers vs Procedures and Packages Encapsulation of related procedures and variables providing: Better organization during the development process and for Triggers are similar to stored procedures. A trigger granting privileges can include SQL and PL/SQL statements to execute Declaration of public and private procedures, variables, constants, as a unit and can invoke stored procedures. Triggers and cursors are stored in the database separate from their Better performance associated tables. An entire package is loaded into memory when a procedure within the package is called for the first time in one operation, as Procedures and triggers differ in the way that they opposed to the separate loads required for standalone are invoked. procedures. When calls to related packaged procedures occur, no disk I/O is necessary to execute the compiled code already in A procedure is explicitly executed by a user, memory. application, or trigger. A package body can be replaced and recompiled without Triggers (one or more) are implicitly fired affecting the specification. Objects that reference a package's (executed) by Oracle when a triggering INSERT, constructs (always via the specification) need not be recompiled UPDATE, or DELETE statement is issued, no unless the package specification is also replaced. Unnecessary recompilations can be minimized, so in less impact on overall matter which user is connected or which database performance. application is being used. Retrieval: Impedance Mismatch Cursors What happens when the query returns several rows? When a query returns multiple rows a cursor The host variables can only hold one value. must be declared to process each row Oracle will only pass the first row returned by the query returned by the query and to keep track of to the PL/SQL block (or host language program). which row is currently being processed. Re-executing the SELECT operation will only run the query again and so the first row will be selected again. The rows returned by a query are stored in an Different type systems area called the Active Set. Different execution models A cursor can be thought of as pointing to a row in the active set. PROCEDURE apply_marks IS Cursors and Retrieval Embedded SQL CURSOR marks_cursor IS SELECT sno, cno, kind, amount FROM marks SQL statements placed within a program. The source WHERE status = 'Pending' ORDER BY time_tag FOR UPDATE OF marks; program is called the host program, and the language BEGIN in which it is written is called the host language FOR marks IN marks_cursor LOOP /* implicit open and You can execute any SQL statement using fetch */ embedded SQL statements just as if you were in new_status := ’Accepted'; SQL*Plus. IF marks.kind = ’L' THEN credit_labmark(marks.sno, marks.cno, marks.amount); CREATE, ALTER and DROP database tables ELSIF trans.kind = ’E' THEN SELECT, INSERT, UPDATE and DELETE rows of credit_exammark(marks.sno, marks.cno, data marks.amount); COMMIT transactions (make any changes to the ELSE new_status := 'Rejected'; END IF; database permanent) UPDATE marks SET status = new_status WHERE CURRENT OF marks_cursor; END LOOP; COMMIT; END apply_marks; 3 Embedded SQL Statements Executable and Declarative Statements Embedded SQL statements incorporate DDL, DML, and transaction control statements within a procedural language Embedded SQL includes all the interactive SQL statements program. They are used
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages6 Page
-
File Size-