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

174 lines
12 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="SELECT INTO statement, SELECT INTO,
SQL statements, single row select, in SELECT INTO statement, isolation-clause,
INTO clause, variable, assigned to variable, null value, SQL" />
<title>SELECT INTO</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="hselin"></a>
<h2 id="hselin"><a href="rbafzmst02.htm#ToC_1269">SELECT INTO</a></h2><a id="idx3107" name="idx3107"></a><a id="idx3108" name="idx3108"></a><a id="idx3109" name="idx3109"></a>
<a name="selct"></a>
<p id="selct">The SELECT INTO statement produces a result table consisting
of at most one row, and assigns the values in that row to variables. If the
table is empty, the statement assigns +100 to SQLCODE and '02000'
to SQLSTATE and does not assign values to the variables. If more than one
row satisfies the search condition, statement processing is terminated, and
an error occurs.</p>
<p></p>
<a name="wq1726"></a>
<h3 id="wq1726"><a href="rbafzmst02.htm#ToC_1270">Invocation</a></h3>
<p>This statement can only be embedded in an application program. It is an
executable statement that cannot be dynamically prepared. It must not be specified
in REXX.</p>
<a name="wq1727"></a>
<h3 id="wq1727"><a href="rbafzmst02.htm#ToC_1271">Authorization</a></h3>
<p>The privileges held by the authorization ID of the statement must include
at least one of the following: </p>
<ul>
<li>For each table or view identified in the statement,
<ul>
<li>The SELECT privilege on the table or view, and</li>
<li>The system authority *EXECUTE on the library containing the table or view</li></ul></li>
<li>Administrative authority</li></ul>
<p>For information on the system authorities corresponding to SQL privileges,
see <a href="rbafzmstgnt.htm#eqtablet">Corresponding System Authorities When Checking Privileges to a Table or View</a>.</p>
<a name="wq1728"></a>
<h3 id="wq1728"><a href="rbafzmst02.htm#ToC_1272">Syntax</a></h3>
<a href="rbafzmsthselin.htm#synselectinto"><img src="c.gif" alt="Click to skip syntax diagram" /></a>
<pre class="cgraphic"><span><img src="c.gif" alt="Read syntax diagram" longdesc="rbafzmstsyn377.htm"
border="0" /></span><a href="#skipsyn-376"><img src="c.gif" alt="Skip visual syntax diagram"
border="0" /></a> .-,--------.
V |
>>-<span class="italic">select-clause</span>--INTO----<span><span class="italic">variable</span></span>-+---------------------------->
>--<span class="italic">from-clause</span>--+--------------+--+-----------------+--+---------------+-->
'-<span class="italic">where-clause</span>-' '-<span class="italic">group-by-clause</span>-' '-<span class="italic">having-clause</span>-'
(1)
>--+-----------------+--+--------------------+-------+------------------+->&lt;
'-<span class="italic">order-by-clause</span>-' '-<span class="italic">fetch-first-clause</span>-' '-<span class="italic">isolation-clause</span>-'
</pre>
<a name="skipsyn-376" id="skipsyn-376"></a>
<a name="wq1729"></a>
<div class="notelisttitle" id="wq1729">Notes:</div>
<ol type="1">
<li>Only one row may be specified in the fetch-first-clause.</li>
</ol>
<a name="synselectinto"></a>
<h3 id="synselectinto"><a href="rbafzmst02.htm#ToC_1273">Description</a></h3>
<p>The result table is derived by evaluating the <span class="italic">isolation-clause</span>, <span class="italic">from-clause</span>, <span class="italic">where-clause</span>, <span class="italic">group-by-clause</span>, <span class="italic">having-clause</span>, <span class="italic">order-by-clause</span>, <span class="italic">fetch-first-clause</span>, and <span class="italic">select-clause</span>, in this
order.</p>
<p>See <a href="rbafzmstsubsel.htm#subsel">Queries</a> for a description of the <var class="pv">select-clause</var>, <var class="pv">from-clause</var>, <var class="pv">where-clause</var>, <var class="pv">group-by-clause</var>, <var class="pv">having-clause</var>, <var class="pv">order-by-clause</var>, <var class="pv">fetch-first-clause</var>, and <var class="pv">isolation-clause</var>.</p><a id="idx3110" name="idx3110"></a>
<dl class="parml">
<dt class="bold">INTO <var class="pv">variable</var>,... </dt><a id="idx3111" name="idx3111"></a><a id="idx3112" name="idx3112"></a>
<dd>Identifies one or more host structures or variables that must be declared
in the program in accordance with the rules for declaring host structures
and variables. In the operational form of the INTO clause, a reference to
a host structure is replaced by a reference to each of its variables. The
first value in the result row is assigned to the first variable in the list,
the second value to the second variable, and so on. The data type of each
variable must be compatible with its corresponding column.
</dd>
</dl>
<a name="wq1731"></a>
<h3 id="wq1731"><a href="rbafzmst02.htm#ToC_1274">Note</a></h3><a id="idx3113" name="idx3113"></a><a id="idx3114" name="idx3114"></a>
<p><span class="bold">Variable assignment: </span> Each assignment
to a variable is performed according to the retrieval assignment rules described
in <a href="rbafzmstch2bas.htm#ch2bas">Assignments and comparisons</a>. If the number of variables is less than the number
of values in the row, an SQL warning (SQLSTATE 01503) is returned (and the
SQLWARN3 field of the SQLCA is set to 'W'). Note that there is no
warning if there are more variables than the number of result columns. If
a value is null, an indicator variable must be provided for that value.</p>
<p>If the specified variable is character and is not large enough to contain
the result, a warning (SQLSTATE 01004) is returned (and 'W' is assigned
to SQLWARN1 in the SQLCA). The actual length of the result may be returned
in the indicator variable associated with the variable, if an indicator variable
is provided. For further information, see <a href="rbafzmstch2refvar.htm#ch2refvar">References to variables</a>.</p>
<p>If an assignment error occurs, the value of that variable and any following
variables is unpredictable. Any values that have already been assigned to
variables remain assigned.</p>
<p><span class="bold">Empty result table: </span> If the result table is empty,
the statement assigns '02000' to the SQLSTATE variable and does not
assign values to the variables.</p>
<p><span class="bold">Result tables with more than one row: </span> If more than
one row satisfies the search condition, statement processing is terminated
and an error is returned (SQLSTATE 21000). If an error occurs because the
result table has more than one row, values may or may not be assigned to the
variables. If values are assigned to the variables, the row that is the source
of the values is undefined and not predictable.</p>
<p><span class="bold">Result column evaluation considerations: </span> When a
TIME value is selected, if the ISO, EUR, or JIS format is used, the length
of the variable must not be less than 5. If the length is 5, 6, or 7, the
seconds part of the time is omitted from the result, a warning (SQLSTATE 01004)
is returned (and 'W' is assigned to SQLWARN1 in the SQLCA). In this
case, the seconds part of the time is assigned to the indicator variable if
one is provided, and, if the length is 6 or 7, blank padding occurs so that
the value is a valid string representation of a time.</p>
<p>If an error occurs while evaluating a result column in the SELECT list
of a SELECT INTO statement, as the result of an arithmetic expression (such
as division by zero, or overflow) or a numeric or character conversion error,
the result is the null value. As in any other case of a null value, an indicator
variable must be provided. The value of the variable is undefined. In this
case, however, the indicator variable is set to the value of -2. Processing
of the statement continues and a warning is returned. If an indicator variable
is not provided, an error is returned and no more values are assigned to variables.
It is possible that some values have already been assigned to variables and
will remain assigned when the error is returned.</p>
<a name="wq1732"></a>
<h3 id="wq1732"><a href="rbafzmst02.htm#ToC_1275">Examples</a></h3>
<p><span class="italic">Example 1:</span> Using a COBOL program statement, put
the maximum salary (SALARY) from the EMPLOYEE table into the host variable
MAX-SALARY (DECIMAL(9,2)). </p>
<pre class="xmp"> EXEC SQL <span class="bold">SELECT MAX(</span>SALARY<span class="bold">)</span>
<span class="bold">INTO</span> :MAX-SALARY
<span class="bold">FROM</span> EMPLOYEE <span class="bold">WITH CS</span>
END-EXEC.</pre>
<p><span class="italic">Example 2:</span> Using a Java&trade; program statement, select the row
from the EMPLOYEE table on the connection context 'ctx' with a employee number
(EMPNO) value the same as that stored in the host variable HOST_EMP (java.lang.String).
Then put the last name (LASTNAME) and education level (EDLEVEL) from that
row into the host variables HOST_NAME (String) and HOST_EDUCATE (Integer). </p>
<pre class="xmp"> #sql [ctx] { <span class="bold">SELECT</span> LASTNAME, EDLEVEL
<span class="bold">INTO</span> :HOST_NAME, :HOST_EDUCATE
<span class="bold">FROM</span> EMPLOYEE
<span class="bold">WHERE</span> EMPNO = :HOST_EMP };</pre>
<p><span class="italic">Example 3:</span> Put the row for employee
528671, from the EMPLOYEE table, into the host structure EMPREC. Assume that
the row will be updated later and should be locked when the query executes. </p>
<pre class="xmp"> EXEC SQL <span class="bold">SELECT *</span>
<span class="bold">INTO</span> :EMPREC
<span class="bold">FROM</span> EMPLOYEE
<span class="bold">WHERE</span> EMPNO <span class="bold">=</span> '528671'
<span class="bold">WITH RS USE AND KEEP EXCLUSIVE LOCKS</span>
END-EXEC.</pre>
<p><a id="idx3115" name="idx3115"></a><a id="idx3116" name="idx3116"></a></p>
<hr /><br />
[ <a href="#Top_Of_Page">Top of Page</a> | <a href="rbafzmsthselectstmt.htm">Previous Page</a> | <a href="rbafzmstetconj.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>