* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Stored procedures
Survey
Document related concepts
Transcript
Stored procedures and functions Procedures and functions stored in the database Stored procedures 1 Layered models vs. stored procedures • Ordinary layered model – – – – user interface functions model data • Layered model with stored procedures – user interface – functions in DB – model + data in DB Stored procedures 2 Stored procedures / functions • Stored procedures /functions are – Named blocks of PL/SQL • SQL DDL • Assignments, if statements, loops, etc. – Syntax checked and compiled into p-code • The p-code is stored in the database • Function – Returns a result • Procedure – Does not return a result – Comparable to a void method in C# or Java Stored procedures 3 3 types of parameters • Procedures can have 3 types of parameters – IN • used for input – OUT • used for output • side effects hard to read / debug the code – INOUT • used for input + output – Examples • scottTigerStoredProcedures.sql • Functions – standard: only IN parameters – Oracle: all kinds of parameters • Don’t use OUT and INOUT with functions! Stored procedures 4 Calling a stored procedure • Syntax – procedureName(formalParameter1, formalParameter2, …) • 2 ways to link formal and actual parameters – Position • Like Java: 1st parameter formal parameter linked to 1st actual parameter, etc. – Named • Syntax: formalParameterName => value Stored procedures 5 Some PL/SQL to use in the body of stored procedures and functions • call pName(parameters) • begin … end – call another procedure • return value – return from a function • variable := value – assignment – statement group • if condition then statements else statements end if • For loop • While loop • General loop – Inner exit statement Stored procedures 6 SQL statements • Stored procedures / functions can contain SQL statements – select, insert, update, delete • Select syntax [result: one value] – select attr into variable from … Stored procedures 7 Cursors • Cursor points to the current row. – Very much like JDBC • Example. totalSalary, fig. 14-3, page 317 • DECLARE cName CURSOR FOR select statement – declares the select statement – JDBC statement object • OPEN cName – Executes the select statement – JDBC ResultSet rs = statement.executeQuery(…) Stored procedures 8 Exception handling • Stored procedures can handles exception – Similar to Java try … catch … – Syntax page 314 – Example search_emp + searchDept, fig. 14-4, page 318 – Fig. 12-7, page 282 Predefined/named system exceptions – When others • Catches exceptions not already caught – General strategy • Don’t catch exceptions if you don’t know how to handle them properly • Writing to the screen is usually not enough Stored procedures 9 Calling a function, 320 • Functions can be called from – PL/SQL block (like the body of another procedure / function) • Example fig. 14-7, page 321 – SQL statement • Example page 323 Stored procedures 10 Compiling and recompiling stored procedures, 317 • Stored procedures / functions are automatically compiled when recreated. • If one of the tables used in a procedures is altered the procedure / function must be recompiled – Alter procedure procedureName compile; Stored procedures 11 Packages, 323 • A packages groups a set of logically connected stored procedures, functions, etc. – Kind of module • Built-in packages in Oracle – STANDARD • Many functions used in Oracle – DBMS_OUTPUT • Put_line and other procedures • Example fig. 14-7, page 321 • You can create your own packages! Stored procedures 12 Package structure, 324 • Package specification – Specification of procedures, functions, etc. • Public part of the package • Syntax page 324 • Example fig. 14-10, page 325 • Package body – Implementation of procedures, functions, etc. • Private part of the package • Syntax page 325 • Example fig. 14-11, page 327 Stored procedures 13 Calling a procedure / function in a package, 326 • Name of procedure / function must be prefixed with the name of the package – PackageName.ProcedureName(…) – DBMS_OUTPUT.PUT_LINE(…) – myPackage.myProcedure(…) – Example fig. 14-12, page 328 Stored procedures 14 Java JDBC API • Pakken java.sql – interface CallableStatement – "factoried" by a connection object • CallableStatement prepareCall(String sql) • cst = prepareCall("{call insertDept(?, ?, ?)}"); – CallableStatement extends PreparedStatement • PreparedStatement extends Statement Stored procedures 15 JDBC examples • Stored procedure with IN parameters • Stored procedure with IN and OUT parameters • Stored function – CallableStatementExample.java Stored procedures 16 Handling parameters • IN parameters – handled like parameters to prepared statements • cstm.setString(1, 'Anders'); • cstm.setXxx(position, value); • OUT parameters + results from functions – register type before executing the call • cstm.registerOutParameter(position, type) – results can be obtained after executing the call • value = cstm.getXxx(position) Stored procedures 17