Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Submitted To :  Submitted By : Er.Naresh Garg  Sandeep Kumar(4742) Lecturer in RDBMS  Pralabh Jain(4736) Puneet Jain(4739)...
Stored procedures and Functions <ul><li>Collections of SQL and PL/SQL statements. </li></ul><ul><li>Stored in complied fro...
Uses for procedures   <ul><li>Define central well-known business functions. </li></ul><ul><li>-  Create  an order </li></u...
Creating a procedure Argument Modes
Creating a procedure <ul><li>Example </li></ul><ul><li>Tip : Write each procedure in a text file, and save(both P-code and...
Creating and changing a function Example CREATE FUNCTION get_bal  (acc_no  NUMBER(4)) RETURN  NUMBER(11,2); IS acc_bal  NU...
Statements in procedures <ul><li>Valid statements in a procedure or function </li></ul><ul><li>Restricted statements </li>...
Executing a stored procedure <ul><li>From within a PL/SQL block </li></ul><ul><li>On a remote node </li></ul><ul><li>From ...
Specifying procedure arguments <ul><li>Example </li></ul><ul><li>Positional method </li></ul><ul><li>Named method </li></u...
Specifying procedure arguments <ul><li>Combination method </li></ul><ul><li>Use both positional and named methods </li></u...
How procedures are entered into the database <ul><li>PL/SQL engine compiles the source code </li></ul><ul><li>ORACLE store...
PL/SQL Compilation Errors <ul><li>Compile done by PL/SQL engine in RDBMS </li></ul><ul><li>Error stored in the database </...
USER-DEFINED System Errors <ul><li>Any procedure can raise an error and return a user defined error message and error numb...
USER-DEFINED System Errors Example CREATE PROCEDURE fire_employee (empid NUMBER) AS BEGIN IF empid <=0 THEN raise_applicat...
Debugging methods <ul><li>Version 6 </li></ul><ul><li>Version 7 </li></ul><ul><li>Future </li></ul><ul><li>User INSERT’S i...
Dependencies and Procedures  <ul><li>A procedure is dependent on: </li></ul><ul><li>Two types of dependencies  </li></ul><...
Recompilation of Dependent procedures <ul><li>When an object changes, its dependent objects are marked for recompilation <...
Recompilation <ul><li>Procedure/function can be recompiled be either </li></ul><ul><li>If recompilation fails, error infor...
Manual Recompilation <ul><li>Example  </li></ul><ul><li>ALTER PROCEDURE </li></ul><ul><li>add_department  COMPILE  </li></...
Changing a procedure <ul><li>To modify a procedure, replace it: </li></ul><ul><li>OR REPLACE option: </li></ul><ul><li>CRE...
Dropping a procedure DROP PROCEDURE Example DROP PROCEDURE fire_employee; Marks dependent objects for recompilation schema...
Privileges for procedures <ul><li>Example </li></ul><ul><li>Procedure executes under the authority of owner, not user exec...
Privileges for procedures PROCEDURE system privileges apply to procedures, functions, and packages
Privileges for procedures
Benefits of Procedures <ul><li>Security </li></ul><ul><li>Integrity </li></ul><ul><li>Performance </li></ul><ul><li>Execut...
Benefits of Procedures <ul><li>Memory savings </li></ul><ul><li>Productivity </li></ul><ul><li>Takes advantages of shared ...
Benefits of Procedures <ul><li>Maintainability </li></ul><ul><li>High availability </li></ul><ul><li>Enables system wide c...
 
Upcoming SlideShare
Loading in …5
×

Procedures/functions of rdbms

11,089 views

Published on

presentation of procedures and function of rdbms

Published in: Education
  • dbms procedure
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Procedures/functions of rdbms

  1. 1. Submitted To : Submitted By : Er.Naresh Garg Sandeep Kumar(4742) Lecturer in RDBMS Pralabh Jain(4736) Puneet Jain(4739) Shiv Kumar(4748) Yohal Garg(D-8206)
  2. 2. Stored procedures and Functions <ul><li>Collections of SQL and PL/SQL statements. </li></ul><ul><li>Stored in complied from in the database. </li></ul><ul><li>Can call others and self. </li></ul><ul><li>Can be called from all client environments </li></ul><ul><li>Procedures and function (including remote) are the same, except a function returns a values and a procedure does not. </li></ul>
  3. 3. Uses for procedures <ul><li>Define central well-known business functions. </li></ul><ul><li>- Create an order </li></ul><ul><li>- Delete a customer </li></ul><ul><li>Store batch job in the database </li></ul><ul><li>- Weekly account rollups </li></ul><ul><li>Encapsulate a transaction </li></ul><ul><li>- Gather and process information from remote nodes </li></ul><ul><li>Funnel activity on a table through a single path </li></ul><ul><li>- all changes to employee salaries should change department budgets. </li></ul>
  4. 4. Creating a procedure Argument Modes
  5. 5. Creating a procedure <ul><li>Example </li></ul><ul><li>Tip : Write each procedure in a text file, and save(both P-code and source code is saved in the database) </li></ul>CREATE PROCEDURE fire_employee (empid NUMBER) AS BEGIN … DELETE FROM emp WHERE empno= fire_employee.empid; END
  6. 6. Creating and changing a function Example CREATE FUNCTION get_bal (acc_no NUMBER(4)) RETURN NUMBER(11,2); IS acc_bal NUMBER(11,2); BEGIN SELECT balance INTO acc_bal FROM accounts WHERE account_id_no=acc_no; RETURN (acc_bal); END;
  7. 7. Statements in procedures <ul><li>Valid statements in a procedure or function </li></ul><ul><li>Restricted statements </li></ul><ul><li>SQL DML or PL/SQL statements </li></ul><ul><li>Calls to other procedures and functions stored in the database </li></ul><ul><li>Calls to other procedures and functions in a remote database </li></ul><ul><li>DDL </li></ul><ul><li>Dynamic SQL </li></ul><ul><li>In trigger, COMMIT,SAVEPOINT, and ROLLBACK </li></ul>
  8. 8. Executing a stored procedure <ul><li>From within a PL/SQL block </li></ul><ul><li>On a remote node </li></ul><ul><li>From SQL*DBA and some ORACLE tools </li></ul><ul><li>Within an anonymous block (when EXECUTE not available) </li></ul><ul><li>From a precompiler application </li></ul>fire_employee (empno); scott.fire_employee (empno); scott.fire_employee@ny (empno); EXECUTE fire_employee (1043) SQLPLUS>BEGIN FIRE_EMPLOYEE(1043);END; EXEC SQL fire_employee (:empno);
  9. 9. Specifying procedure arguments <ul><li>Example </li></ul><ul><li>Positional method </li></ul><ul><li>Named method </li></ul><ul><li>CREATE PROCEDURE update_sal </li></ul><ul><li>(empno NUMBER, </li></ul><ul><li>bonus NUMBER, </li></ul><ul><li>sal_incr NUMBER) ….; </li></ul><ul><li>List values in the order they are declared </li></ul><ul><li>update_sal (7000,20,500); </li></ul><ul><li>List argument names and values in any order, using special syntax </li></ul><ul><li>update_sal </li></ul><ul><li>(bonus=>20, </li></ul><ul><li>sal_incr=>500, </li></ul><ul><li>empno=>7000); </li></ul>
  10. 10. Specifying procedure arguments <ul><li>Combination method </li></ul><ul><li>Use both positional and named methods </li></ul><ul><li>Once you specify a named parameter, must use named method for all remaining </li></ul>update_sal Legal (7000,sal_incr=>500,bonus=>20); update_sal Illegal (empno=>7000, sal_incr=>500,20);
  11. 11. How procedures are entered into the database <ul><li>PL/SQL engine compiles the source code </li></ul><ul><li>ORACLE stores a procedure in a database: </li></ul><ul><li>SQL in procedure not stored in parsed form </li></ul><ul><li>Object name </li></ul><ul><li>Source code </li></ul><ul><li>Parse tree </li></ul><ul><li>Pseudo code(P-code) </li></ul><ul><li>Syntax errors in dictionary table </li></ul><ul><li>Dependency information </li></ul><ul><li>Uses shared and cached SQL </li></ul><ul><li>Allows SQL to be optimized dynamically (without recompiling referencing procedures) </li></ul>
  12. 12. PL/SQL Compilation Errors <ul><li>Compile done by PL/SQL engine in RDBMS </li></ul><ul><li>Error stored in the database </li></ul><ul><li>To view errors: </li></ul><ul><li>Use SQL*DBA command SHOW ERRORS </li></ul><ul><li>Select from errors views </li></ul><ul><li>USER_ERRORS </li></ul><ul><li>ALL_ERRORS </li></ul><ul><li>DBA_ERRORS </li></ul>
  13. 13. USER-DEFINED System Errors <ul><li>Any procedure can raise an error and return a user defined error message and error number </li></ul><ul><li>Error number range is -20000 to -20999 </li></ul><ul><li>Range always reserved for user defined errors </li></ul><ul><li>Oracle does not check if user defined error numbers are used uniquely </li></ul><ul><li>Raise error within PL/SQL block with procedure </li></ul><ul><li>Full pathname of procedure may be needed in early releases </li></ul>raise application_error (error_number,’text of the message’) sys.standard_utilities. Raise_application_error
  14. 14. USER-DEFINED System Errors Example CREATE PROCEDURE fire_employee (empid NUMBER) AS BEGIN IF empid <=0 THEN raise_application_error (-20100,’Employee number must be> 0’); ELSE DELETE FROM emp WHERE EMPNO =EMPID; END IF; END; SQLDBA> EXECUTE FIRE_EMPLOYEE(-1); ORA=-20100: Employee number must be >0
  15. 15. Debugging methods <ul><li>Version 6 </li></ul><ul><li>Version 7 </li></ul><ul><li>Future </li></ul><ul><li>User INSERT’S information into a user defined table, and examines data </li></ul><ul><li>PL/SQL will have methods of I/O to system defined table(TIO$LINES) </li></ul><ul><li>Can use Version6 method </li></ul>TEXT_IO package Rolls back or commits with transaction DEBUG_IO package Writes despite error, rollback,commit A PL/SQL debugger
  16. 16. Dependencies and Procedures <ul><li>A procedure is dependent on: </li></ul><ul><li>Two types of dependencies </li></ul><ul><li>ORACLE automatically checks dependencies </li></ul><ul><li>every database object to which it refers (direct dependency) </li></ul><ul><li>the database objects those objects depend on(indirect dependency) </li></ul>procedures,functions,packages,tables,views,synonyms,sequences local: objects are on the same node remote: objects are on separate nodes
  17. 17. Recompilation of Dependent procedures <ul><li>When an object changes, its dependent objects are marked for recompilation </li></ul><ul><li>Any change to definition of referenced object implies new version of reference object </li></ul><ul><li>Dependent objects must be recompiled if referenced object changes </li></ul><ul><li>Recompilation of dependent objects takes place automatically at runtime </li></ul><ul><li>Reasons recompilation could fail </li></ul><ul><li>Changing parameter list in called procedure </li></ul><ul><li>Changing definition of or removing referenced column from referenced table </li></ul><ul><li>Dropping referenced table </li></ul>
  18. 18. Recompilation <ul><li>Procedure/function can be recompiled be either </li></ul><ul><li>If recompilation fails, error information is put to error table </li></ul><ul><li>RDBMS automatically, when next accessed(only if marked for recompilation) </li></ul><ul><li>Manually by the user, using ALTER PROCEDURE command </li></ul>
  19. 19. Manual Recompilation <ul><li>Example </li></ul><ul><li>ALTER PROCEDURE </li></ul><ul><li>add_department COMPILE </li></ul>ALTER PROCEDURE schema Procedure COMPILE
  20. 20. Changing a procedure <ul><li>To modify a procedure, replace it: </li></ul><ul><li>OR REPLACE option: </li></ul><ul><li>CREATE without OR REPLACE on existing procedure fails </li></ul>CREATE OR REPLACE PROCEDURE fire_employee AS . . . END; <ul><li>Recreates the procedure even if it already exists </li></ul><ul><li>Retains existing grants (need not reissue) </li></ul><ul><li>Creates procedure even if there are syntax errors </li></ul><ul><li>Marks dependent objects for recompilation </li></ul><ul><li>Users executing old procedure finish that call: next invocation gets new procedure </li></ul><ul><li>Facilitates development (one step) </li></ul>
  21. 21. Dropping a procedure DROP PROCEDURE Example DROP PROCEDURE fire_employee; Marks dependent objects for recompilation schema Procedure
  22. 22. Privileges for procedures <ul><li>Example </li></ul><ul><li>Procedure executes under the authority of owner, not user executing procedure </li></ul><ul><li>User of procedure need not have access to objects inside procedure </li></ul><ul><li>Can only GRANT privileges on an entire package, not a procedure, function,or variable defined in the package </li></ul>GRANT EXECUTE ON scott.hire_fire TO mkennedy WITH GRANT OPTION;
  23. 23. Privileges for procedures PROCEDURE system privileges apply to procedures, functions, and packages
  24. 24. Privileges for procedures
  25. 25. Benefits of Procedures <ul><li>Security </li></ul><ul><li>Integrity </li></ul><ul><li>Performance </li></ul><ul><li>Executes under security domain of procedure’s owner </li></ul><ul><li>Provides controlled indirect access to database objects to non- privileged users </li></ul><ul><li>Defines allowed operations on data </li></ul><ul><li>Ensures related actions are performed together </li></ul><ul><li>Reduces number of calls to thedatabase </li></ul><ul><li>Decreases network traffic </li></ul><ul><li>Pre-parses PL/SQL statements </li></ul>
  26. 26. Benefits of Procedures <ul><li>Memory savings </li></ul><ul><li>Productivity </li></ul><ul><li>Takes advantages of shared SQL </li></ul><ul><li>Requires only one copy of the code for multiple users </li></ul><ul><li>Avoids redundant code for common procedures in multiple applications </li></ul><ul><li>Reduces coding errors: no redundant code written </li></ul>
  27. 27. Benefits of Procedures <ul><li>Maintainability </li></ul><ul><li>High availability </li></ul><ul><li>Enables system wide changes with one update </li></ul><ul><li>Makes testing easier: duplicate testing not needed </li></ul><ul><li>Dependency tracked by ORACLE </li></ul><ul><li>Allows changing procedured on-line while users execute previous version </li></ul>

×