Nothing Special   »   [go: up one dir, main page]

Stored Procedures2

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 8

Stored procedures

Stored procedures can help improve application performance and reduce


database access traffic. All database access must go across the network, which,
in some cases, can result in poor performance. For each SQL statement, a
database manager application must initiate a separate communication with DB2.
To improve application performance, you can create stored procedures that run
on your database server. A client application can then simply call the stored
procedures to obtain results of the SQL statements that are contained in the
procedure. Because the stored procedure runs the SQL statement on the server
for you, database performance is improved. In addition, stored procedures can
help to centralize business logic. If you make changes to a stored procedure, the
changes are immediately available to all client applications that use it.

Stored procedures are programs that have the following characteristics:


• Contain procedural constructs with SQL statements
• Are stored in databases and run on DB2 servers
• Can be called by name by an application that is using SQL
• Allow an application program to run in two parts: the application on the
client and the stored procedure on the server
The following figures show how two client applications access a database
located on a database server. A client application that does not use stored
procedures to access a database can require more network traffic. A client
application that takes advantage of a stored procedure can help to reduce
network traffic and the number of times the database is accessed. A typical
stored procedure contains one or more SQL statements and some manipulative
or logical processing in a programming language. The client application program
uses the SQL CALL statement to start the stored procedure. When the stored
procedure runs, it locally accesses the database on the database server and
returns requested information to the client application.
Figure 1. A client application that does not use a stored procedure
Figure 2. A client application that uses a stored procedure

To use a stored procedure, you need to write two programs: the stored
procedure, which runs on a database server, and a client application, which runs
on a client workstation or a middleware server (such as a Web server). The client
application calls the stored procedure by using one of the available API methods.
A stored procedure follows certain conventions for exchanging data with a client
application.

A stored procedure does not connect to the database, but relies on the database
connection already established by the client. The call across the network
includes parameters that are required by the stored procedure. The stored
procedure uses the parameters to complete its logic when it runs. It can return a
set of values, rows, or modified parameters to the calling client application.
The Development Center is designed to give you a full development environment
for working with stored procedures, from creating to deploying.

Related tasks
Building routines
Exporting routines
Importing routines
Editing source code
Filtering in the Server View
Dropping routines or objects from a database
Removing routines or objects from a project

Related information
Creating stored procedures
Running routines
Debugging
Deploying routines

Benefits of using stored procedures


Applications that use stored procedures have the following advantages:
Reduced network usage between clients and servers
A client application passes control to a stored procedure on the database
server. The stored procedure performs intermediate processing on the
database server, without transmitting unnecessary data across the
network. Only the records that are actually required by the client
application are transmitted. Using a stored procedure can result in
reduced network usage and better overall performance.

Applications that execute SQL statements one at a time typically cross the
network twice for each SQL statement. A stored procedure can group SQL
statements together, making it necessary to only cross the network twice
for each group of SQL statements. The more SQL statements that you
group together in a stored procedure, the more you reduce network usage
and the time that database locks are held. Reducing network usage and
the length of database locks improves overall network performance and
reduces lock contention problems.

Applications that process large amounts of SQL-generated data, but


present only a subset of the data to the user, can generate excessive
network usage because all of the data is returned to the client before final
processing. A stored procedure can do the processing on the server, and
transmit only the required data to the client, which reduces network usage.

Enhanced hardware and software capabilities


Applications that use stored procedures have access to increased
memory and disk space on the server computer. These applications also
have access to software that is installed only on the database server. You
can distribute the executable business logic across machines that have
sufficient memory and processors.
Improved security
By including database privileges with stored procedures that use static
SQL, the database administrator (DBA) can improve security. The DBA or
developer who builds the stored procedure must have the database
privileges that the stored procedure requires. Users of the client
applications that call the stored procedure do not need such privileges.
This can reduce the number of users who require privileges.
Reduced development cost and increased reliability
In a database application environment, many tasks are repeated.
Repeated tasks might include returning a fixed set of data, or performing
the same set of multiple requests to a database. By reusing one common
procedure, a stored procedure can provide a highly efficient way to
address these recurrent situations.
Centralized security, administration, and maintenance for common
routines
By managing shared logic in one place at the server, you can simplify
security, administration, and maintenance . Client applications can call
stored procedures that run SQL queries with little or no additional
processing.

Parent topic: Stored procedures

Related concepts
Languages for stored procedures
SQL stored procedures
Java stored procedures

Languages for stored procedures


Using the Development Center, you can create stored procedures in Java or SQL. Both languages
create stored procedures that are highly portable from platform to platform. The language that you
choose depends on your development environment.

SQL stored procedures

SQL provides procedural constructs for writing stored procedures. Writing stored procedures with the
SQL procedure language has the following advantages:
• You can support database modules that are written completely in an SQL language.
• You can quickly learn to write stored procedures with the SQL procedure language. This ease
of learning is especially true if you have experience with other database languages.
• SQL stored procedures are fast because the SQL routines run as compiled routines.
• You can debug SQL stored procedures on Windows, AIX, Sun, and Linux on DB2 Universal
Database servers and on DB2 for z/OS Version 8 server.
• With SQL stored procedures, you can call other SQL procedures, nesting calls up to 16 layers.
SQL stored procedures have size and parameter limitations, depending on the version of DB2 that you
are running:
• For DB2 for OS/390 and z/OS versions 6 and 7, the maximum size for SQL stored procedures
is 32 KB.
• For DB2 for z/OS version 8, the maximum size for SQL stored procedures is 2MB
• For DB2 for Windows and UNIX versions 7 and 8.1, the maximum size for SQL stored
procedures in is 64 KB.
• For DB2 version 8.2, the maximum size for SQL stored procedures is 2 MB

Java stored procedures

Writing stored procedures with Java has the following advantages:


• You can establish a common development environment and common language. This
commonality can be shared by the stored procedures on the database server and the client
application that runs on a client workstation or a middleware server (such as a Web server).
• You can reuse code from Java methods that you have already written.
• The input/output of files is possible with Java stored procedures, within the security limits of
Java. SQL stored procedures do not support the input/output of files.
Java stored procedures have size and parameter limitations, depending on the version of DB2 that you
are running:
• For DB2 for z/OS version 7, the maximum size for Java stored procedures is 32 KB.
• For DB2 for z/OS version 8, the maximum size for Java stored procedures is 10MB
Restriction: For iSeries version 5 release 3, the following are not supported for Java stored
procedures:
• PARAMETER STYLE DB2GENERAL
• BINARY and VARBINARY built-in data types

Parent topic: Stored procedures

Related concepts
Benefits of using stored procedures
SQL stored procedures
Java stored procedures

Related reference
Name lengths and restrictions for identifiers and parameters

SQL stored procedures


An SQL stored procedure is a stored procedure in which the source code is part
of the CREATE PROCEDURE statement. The part of the CREATE
PROCEDURE statement that contains the code is called the stored procedure
body.

SQL stored procedure definitions provide the following information:


• The stored procedure name
• Parameter attributes
• The language in which the stored procedure is written. For an SQL stored
procedure, the language is SQL
• Information about the SQL stored procedure that is used when the stored
procedure is called. This information can include run-time options and
whether the stored procedure returns result sets

Unlike a CREATE PROCEDURE statement for an external stored procedure, the


CREATE PROCEDURE statement for an SQL stored procedure does not specify
the EXTERNAL clause. Instead, an SQL stored procedure has a stored
procedure body, which contains the source statements for the stored procedure.

The following figures show example CREATE PROCEDURE statements for


simple SQL stored procedures. The second example shows a simple SQL stored
procedure for z/OS. The stored procedure name, the list of parameters that are
passed to or from the stored procedure, and the LANGUAGE parameter are
common to all stored procedures. The LANGUAGE value of SQL is particular to
an SQL stored procedure. Line numbers are included here for convenience.

Figure 1. CREATE PROCEDURE for a simple SQL stored procedure


1 CREATE PROCEDURE SCHEMA.Procedure6 ( INOUT var0 varchar(9) )
2 LANGUAGE SQL
--------------------------------------------------------------
3 -- SQL stored procedure SCHEMA.Procedure6
--------------------------------------------------------------
4 P1: BEGIN
-- Declare cursor
DECLARE cursor1 CURSOR WITH RETURN FOR
SELECT * FROM STAFF;

END P1

Line Description

1 The SQL stored procedure name is SCHEMA.Procedure6. The InOut parameter has data type varchar(9).

2 LANGUAGE SQL indicates that this is an SQL stored procedure.

3 Shows a comment for the SQL stored procedure.

4 Begins the body of the SQL stored procedure. All SQL stored procedure bodies consist of one or more statements nested within
a BEGIN and an END keyword.

Figure 2. CREATE PROCEDURE for an SQL stored procedure for z/OS


1 CREATE PROCEDURE SCHEMA.Proc1111 ( )
RESULT SETS 1
2 LANGUAGE SQL
MODIFIES SQL DATA
3 COLLID TEST
4 WLM ENVIRONMENT WLMENV1
5 ASUTIME NO LIMIT
RUN OPTIONS 'NOTEST(NONE,*,*,*)'
----------------------------------------------------------
6 -- SQL Stored Procedure
----------------------------------------------------------
7 P1: BEGIN
-- Declare cursor
DECLARE cursor1 CURSOR WITH RETURN FOR
SELECT SCHEMA, NAME FROM SYSIBM.SYSROUTINES;
-- Cursor left open for client application
OPEN cursor1;
END P1

Line Description

1 The SQL stored procedure name is SCHEMA.Proc1111.

2 LANGUAGE SQL indicates that this is an SQL stored procedure.

3 Specifies a collection ID of TEST.

4 Specifies a Workload Manager (WLM) environment.

5 Specifies no processor time limit for running the routine.

6 Shows a comment for the SQL stored procedure.

7 Begins the body of the SQL stored procedure. All SQL stored procedure bodies consist of one or more statements nested within
a BEGIN and an END keyword.

Parent topic: Stored procedures

Related concepts
Benefits of using stored procedures
Languages for stored procedures
Java stored procedures

Related reference
SQL stored procedure

Java stored procedures


Java stored procedures built by the Development Center conform to the SQLJ
(SQL in Java) Routines specification. Java stored procedures must follow these
guidelines:
• The method that is mapped to the stored procedure must be defined as a
public static void method.
• Output and InOut parameters must be set up as single element arrays.

Java stored procedures can access DB2 data using either Java Database
Connectivity (JDBC) API calls or SQLJ statements. The Development Center can
create Java stored procedures that use either format.
The Development Center defines Java stored procedures in the catalog table
with LANGUAGE JAVA and PARAMETER STYLE JAVA.
Restriction: For iSeries version 5 release 3, the following are not supported for
Java stored procedures:
• PARAMETER STYLE DB2GENERAL
• BINARY and VARBINARY built-in data types

Parent topic: Stored procedures

Related concepts
Benefits of using stored procedures
Languages for stored procedures
SQL stored procedures

Related reference
Java stored procedure with dynamic SQL using JDBC database access
Java stored procedure with static SQL using SQLJ database access

You might also like