ibm-information-center/dist/eclipse/plugins/i5OS.ic.db2_5.4.0.1/rbafzmstsqlcontstmts.htm

125 lines
7.9 KiB
HTML

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-us">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="dc.language" scheme="rfc1766" content="en-us" />
<!-- All rights reserved. Licensed Materials Property of IBM -->
<!-- US Government Users Restricted Rights -->
<!-- Use, duplication or disclosure restricted by -->
<!-- GSA ADP Schedule Contract with IBM Corp. -->
<meta name="dc.date" scheme="iso8601" content="2005-09-19" />
<meta name="copyright" content="(C) Copyright IBM Corporation 1998, 2006" />
<meta name="security" content="public" />
<meta name="Robots" content="index,follow"/>
<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
<meta name="keywords" content="SQL control statements, SQL statements" />
<title>SQL control statements</title>
<link rel="stylesheet" type="text/css" href="ibmidwb.css" />
<link rel="stylesheet" type="text/css" href="ic.css" />
</head>
<body>
<a id="Top_Of_Page" name="Top_Of_Page"></a><!-- Java sync-link -->
<script language = "Javascript" src = "../rzahg/synch.js" type="text/javascript"></script>
<a name="sqlcontstmts"></a>
<h1 id="sqlcontstmts"><a href="rbafzmst02.htm#ToC_1405">SQL control statements</a></h1><a id="idx3320" name="idx3320"></a><a id="idx3321" name="idx3321"></a>
<p>Control statements are SQL statements that allow SQL to be used in a manner
similar to writing a program in a structured programming language. SQL control
statements provide the capability to control the logic flow, declare and set
variables, and handle warnings and exceptions. Some SQL control statements
include other nested SQL statements.</p>
<a href="rbafzmstsqlcontstmts.htm#syncontrol"><img src="c.gif" alt="Click to skip syntax diagram" /></a>
<pre class="cgraphic"><span><img src="c.gif" alt="Read syntax diagram" longdesc="rbafzmstsyn404.htm"
border="0" /></span><a href="#skipsyn-403"><img src="c.gif" alt="Skip visual syntax diagram"
border="0" /></a>SQL-control-statement:
|--+-<span class="italic">assignment-statement</span>------+--------------------------------|
+-<span class="italic">CALL-statement</span>------------+
+-<span class="italic">CASE-statement</span>------------+
+-<span class="italic">compound-statement</span>--------+
+-<span class="italic">FOR-statement</span>-------------+
+-<span class="italic">GET DIAGNOSTICS-statement</span>-+
+-<span class="italic">GOTO-statement</span>------------+
+-<span class="italic">IF-statement</span>--------------+
+-<span class="italic">ITERATE-statement</span>---------+
+-<span class="italic">LEAVE-statement</span>-----------+
+-<span class="italic">LOOP-statement</span>------------+
+-<span class="italic">REPEAT-statement</span>----------+
+-<span class="italic">RESIGNAL-statement</span>--------+
+-<span class="italic">RETURN-statement</span>----------+
+-<span class="italic">SIGNAL-statement</span>----------+
'-<span class="italic">WHILE-statement</span>-----------'
</pre>
<a name="skipsyn-403" id="skipsyn-403"></a>
<a name="syncontrol"></a>
<p id="syncontrol">Control statements are supported in SQL procedures, SQL
functions, and SQL triggers.</p>
<p>SQL procedures are created by specifying LANGUAGE SQL and an SQL routine
body on the CREATE PROCEDURE statement. SQL functions are created by specifying
LANGUAGE SQL and an SQL routine body on the CREATE FUNCTION statement. SQL
routines are SQL procedures or SQL functions. SQL triggers are created by
specifying an SQL routine body on the CREATE TRIGGER statement.</p>
<p>An SQL routine body must be a single SQL statement which may be an SQL
control statement.</p>
<p>The SQL routine body is the executable part of the procedure, function,
or trigger that is transformed by the database manager into a program or service program.
When an SQL routine or trigger is created, SQL creates a temporary source
file (QTEMP/QSQLSRC and QTEMP/QSQLT00000) that will contain C source code
with embedded SQL statements. If either of these source files exist, they
will be modified if needed to have the same CCSID as the source. If DBGVIEW(*SOURCE)
is specified, SQL creates the root source for the routine or trigger in source
file QSQDSRC in the same library as the procedure, function or trigger.</p>
<p>An SQL procedure or SQL trigger is created as a program (*PGM) object using
the CRTPGM command. An SQL function is created as a service program (*SRVPGM)
object using the CRTSRVPGM command. The program or service program is created
in the library that is the implicit or explicit qualifier of the procedure,
function, or trigger name.</p>
<p>When the program or service program is created, the SQL statements other
than certain control statements become embedded SQL statements in the program
or service program. The CALL, SIGNAL, RESIGNAL, and GET DIAGNOSTIC control
statements also become embedded SQL statements in the program or service program.</p>
<p>The specified procedure or function is registered in the SYSROUTINES and
SYSPARMS catalog tables, and an internal link is created from SYSROUTINES
to the program. When the procedure is called using the SQL CALL statement
or when the function is invoked in an SQL statement, the program associated
with the routine is called. The specified SQL trigger is registered in the
SYSTRIGGER catalog table.</p>
<p>The remainder of this chapter contains a description of the control statements
including syntax diagrams, semantic descriptions, usage notes, and examples
of the use of the statements that constitute the SQL routine body. There is
also a section on referencing SQL parameters and variables found in <a href="rbafzmstrefsqlv.htm#refsqlv">References to SQL parameters and SQL variables</a>. There are two common elements that are used in describing
specific SQL control statements. These are:</p>
<ul>
<li>SQL control statements as described above</li>
<li><a href="rbafzmstsqlprocstmt.htm#sqlprocstmt">SQL-procedure-statement</a></li></ul>
<p>For syntax and additional information on the SQL control statements see
the following topics:</p>
<ul>
<li><a href="rbafzmstassignstmt.htm#assignstmt">assignment-statement</a></li>
<li><a href="rbafzmstcallstmt.htm#callstmt">CALL statement</a></li>
<li><a href="rbafzmstcasestmt.htm#casestmt">CASE statement</a></li>
<li><a href="rbafzmstcompoundstmt.htm#compoundstmt">compound-statement</a></li>
<li><a href="rbafzmstifstmt.htm#ifstmt">IF statement</a></li>
<li><a href="rbafzmstforstmt.htm#forstmt">FOR statement</a></li>
<li><a href="rbafzmstgetdiag2.htm#getdiag2">GET DIAGNOSTICS statement</a></li>
<li><a href="rbafzmstgotostmt.htm#gotostmt">GOTO statement</a></li>
<li><a href="rbafzmstiteratestmt.htm#iteratestmt">ITERATE statement</a></li>
<li><a href="rbafzmstleavestmt.htm#leavestmt">LEAVE statement</a></li>
<li><a href="rbafzmstloopstmt.htm#loopstmt">LOOP statement</a></li>
<li><a href="rbafzmstrepeatstmt.htm#repeatstmt">REPEAT statement</a></li>
<li><a href="rbafzmstresignalstmt.htm#resignalstmt">RESIGNAL statement</a></li>
<li><a href="rbafzmstreturnstmt.htm#returnstmt">RETURN statement</a></li>
<li><a href="rbafzmstsignalstmt.htm#signalstmt">SIGNAL statement</a></li>
<li><a href="rbafzmstwhilestmt.htm#whilestmt">WHILE statement</a></li></ul>
<hr /><br />
[ <a href="#Top_Of_Page">Top of Page</a> | <a href="rbafzmstwvrr.htm">Previous Page</a> | <a href="rbafzmstrefsqlv.htm">Next Page</a> | <a href="rbafzmst02.htm#wq1">Contents</a> |
<a href="rbafzmstindex.htm#index">Index</a> ]
<a id="Bot_Of_Page" name="Bot_Of_Page"></a>
</body>
</html>