Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 18

Stored procedures and

functions
Procedures and functions stored
in the database

Stored procedures 1
Layered models vs. stored
procedures
• Ordinary layered • Layered model with
model stored procedures
– user interface – user interface
– functions – functions in DB
– model – model = data in DB
– data

Stored procedures 2
Stored procedures / functions 313
• 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
• Stored procedures’ syntax
– General syntax, page 314
– Example, page 315
• Stored functions’ syntax
– General syntax, page 319
– Example fig. 14-6, page 321
Stored procedures 3
3 types of parameters, 314
• 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, 314
• Syntax
– procedureName(formalParameter1, formalParameter2, …)
– Examples page 314
• 2 ways to link formal and actual parameters
– Position
• Like Java: 1st parameter formal parameter linked to 1st actual
parameter, etc.
• Examples:
– Figure 14-2, page 316
– calling insertDept in scottTigerStoredProcedures.sql
– Named
• Syntax: formalParameterName => value
• Example: calling insertDept in scottTigerStoredProcedures.sql

Stored procedures 5
Some PL/SQL to use in the body of
stored procedures and functions
• call pName(parameters) • begin … end
– call another procedure – statement group
• return value • if condition then
– return from a function statements else
• variable := value statements end if
– assignment – Example page 329
• 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 …
• Example figure 14-4, page 318
• Insert example
– insertDept (my own example)

Stored procedures 7
Cursors, 268
• Cursor points to the current row.
– Very much like JDBC
• Example 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 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
Compilation errors in stored
procedures / functions, 317

Stored procedures 11
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 12
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 13
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 14
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 15
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 16
JDBC examples
• Stored procedure with IN parameters
• Stored procedure with IN and OUT
parameters
• Stored function
– CallableStatementExample.java

Stored procedures 17
Handling parameters
• IN paramaters
– 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 18

You might also like