ibm-information-center/dist/eclipse/plugins/i5OS.ic.cli_5.4.0.1/rzadpfndrec.htm

190 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 lang="en-us" xml:lang="en-us">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<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="DC.Type" content="reference" />
<meta name="DC.Title" content="SQLGetDiagRec - Return diagnostic information (concise)" />
<meta name="DC.Relation" scheme="URI" content="rzadphdapi.htm" />
<meta name="copyright" content="(C) Copyright IBM Corporation 1999, 2006" />
<meta name="DC.Rights.Owner" content="(C) Copyright IBM Corporation 1999, 2006" />
<meta name="DC.Format" content="XHTML" />
<meta name="DC.Identifier" content="rzadpfndrec" />
<meta name="DC.Language" 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. -->
<link rel="stylesheet" type="text/css" href="./ibmdita.css" />
<link rel="stylesheet" type="text/css" href="./ic.css" />
<title>SQLGetDiagRec</title>
</head>
<body id="rzadpfndrec"><a name="rzadpfndrec"><!-- --></a>
<!-- Java sync-link --><script language="Javascript" src="../rzahg/synch.js" type="text/javascript"></script>
<h1 class="topictitle1">SQLGetDiagRec - Return diagnostic information (concise)</h1>
<div><div class="section"></div>
<div class="section"><h4 class="sectiontitle">Purpose</h4> <p><samp class="codeph">SQLGetDiagRec()</samp> returns
the diagnostic information associated with the most recently called DB2<sup>®</sup> UDB CLI function
for a particular statement, connection, or environment handle.</p>
<p>The information
consists of a standardized SQLSTATE, the error code, and a text message. Refer
to <a href="rzadphddiag.htm#rzadphddiag">Diagnostics in a DB2 UDB CLI application</a> for more information.</p>
<p>Call <samp class="codeph">SQLGetDiagRec()</samp> after
receiving a return code of SQL_ERROR or SQL_SUCCESS_WITH_INFO from another
function call.</p>
<div class="note"><span class="notetitle">Note:</span> Some database servers might provide product-specific
diagnostic information after returning SQL_NO_DATA_FOUND from the processing
of a statement.</div>
</div>
<div class="section"><h4 class="sectiontitle">Syntax</h4><pre>SQLRETURN SQLGetDiagRec (SQLSMALLINT hType,
SQLINTEGER handle,
SQLSMALLINT recNum,
SQLCHAR *szSqlState,
SQLINTEGER *pfNativeError,
SQLCHAR *szErrorMsg,
SQLSMALLINT cbErrorMsgMax,
SQLSMALLINT *pcbErrorMsg);</pre>
</div>
<div class="section"><h4 class="sectiontitle">Function arguments</h4>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" width="100%" frame="hsides" border="1" rules="all"><caption>Table 1. SQLGetDiagRec arguments</caption><thead align="left"><tr><th align="left" valign="top" width="22.118959107806692%" id="d0e63">Data type</th>
<th align="left" valign="top" width="20.44609665427509%" id="d0e65">Argument</th>
<th align="left" valign="top" width="17.100371747211895%" id="d0e67">Use</th>
<th align="left" valign="top" width="40.33457249070632%" id="d0e69">Description</th>
</tr>
</thead>
<tbody><tr><td align="left" valign="top" width="22.118959107806692%" headers="d0e63 ">SQLCHAR *</td>
<td align="left" valign="top" width="20.44609665427509%" headers="d0e65 "><em>szErrorMsg</em></td>
<td align="left" valign="top" width="17.100371747211895%" headers="d0e67 ">Output</td>
<td align="left" valign="top" width="40.33457249070632%" headers="d0e69 ">Pointer to buffer to contain the implementation
defined message text. In DB2 UDB CLI, only the DBMS generated messages are returned; DB2 UDB
CLI itself does not return any message text describing the problem.</td>
</tr>
<tr><td align="left" valign="top" width="22.118959107806692%" headers="d0e63 ">SQLCHAR *</td>
<td align="left" valign="top" width="20.44609665427509%" headers="d0e65 "><em>szSqlState</em></td>
<td align="left" valign="top" width="17.100371747211895%" headers="d0e67 ">Output</td>
<td align="left" valign="top" width="40.33457249070632%" headers="d0e69 ">SQLSTATE as a string of 5 characters terminated
by a null character. The first 2 characters indicate error class; the next
3 indicate subclass. The values correspond directly to SQLSTATE values defined
in the X/Open SQL CAE specification and the ODBC specification, augmented
with IBM<sup>®</sup> specific
and product specific SQLSTATE values.</td>
</tr>
<tr><td align="left" valign="top" width="22.118959107806692%" headers="d0e63 ">SQLINTEGER *</td>
<td align="left" valign="top" width="20.44609665427509%" headers="d0e65 "><em>pfNativeError</em></td>
<td align="left" valign="top" width="17.100371747211895%" headers="d0e67 ">Output</td>
<td align="left" valign="top" width="40.33457249070632%" headers="d0e69 "><p>Error code. In DB2 UDB CLI, the <em>pfNativeError</em> argument
contains the SQLCODE value returned by the Database Management System (DBMS).
If the error is generated by DB2 UDB CLI and not the DBMS, then this field is set
to -99999.</p>
</td>
</tr>
<tr><td align="left" valign="top" width="22.118959107806692%" headers="d0e63 ">SQLINTEGER</td>
<td align="left" valign="top" width="20.44609665427509%" headers="d0e65 "><em>handle</em></td>
<td align="left" valign="top" width="17.100371747211895%" headers="d0e67 ">Input</td>
<td align="left" valign="top" width="40.33457249070632%" headers="d0e69 ">Handle for which the diagnostic information
is wanted.</td>
</tr>
<tr><td align="left" valign="top" width="22.118959107806692%" headers="d0e63 ">SQLSMALLINT *</td>
<td align="left" valign="top" width="20.44609665427509%" headers="d0e65 "><em>pcbErrorMsg</em></td>
<td align="left" valign="top" width="17.100371747211895%" headers="d0e67 ">Output</td>
<td align="left" valign="top" width="40.33457249070632%" headers="d0e69 ">Pointer to total number of bytes available
to return to the <em>szErrorMsg</em> buffer. This does not include the null
termination character.</td>
</tr>
<tr><td align="left" valign="top" width="22.118959107806692%" headers="d0e63 ">SQLSMALLINT</td>
<td align="left" valign="top" width="20.44609665427509%" headers="d0e65 "><em>cbErrorMsgMax</em></td>
<td align="left" valign="top" width="17.100371747211895%" headers="d0e67 ">Input</td>
<td align="left" valign="top" width="40.33457249070632%" headers="d0e69 ">Maximum (that is, the allocated) length of
the buffer <em>szErrorMsg</em>. The recommended length to allocate is SQL_MAX_MESSAGE_LENGTH
+ 1.</td>
</tr>
<tr><td align="left" valign="top" width="22.118959107806692%" headers="d0e63 ">SQLSMALLINT</td>
<td align="left" valign="top" width="20.44609665427509%" headers="d0e65 "><em>hType</em></td>
<td align="left" valign="top" width="17.100371747211895%" headers="d0e67 ">Input</td>
<td align="left" valign="top" width="40.33457249070632%" headers="d0e69 ">Handle type.</td>
</tr>
<tr><td align="left" valign="top" width="22.118959107806692%" headers="d0e63 ">SQLSMALLINT</td>
<td align="left" valign="top" width="20.44609665427509%" headers="d0e65 "><em>recNum</em></td>
<td align="left" valign="top" width="17.100371747211895%" headers="d0e67 ">Input</td>
<td align="left" valign="top" width="40.33457249070632%" headers="d0e69 ">If there are multiple errors, this indicates
which one should be retrieved. If header information is requested, this must
be 0. The first error record is number 1.</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="section"><h4 class="sectiontitle">Usage</h4><p>The SQLSTATEs are those defined by the X/OPEN
SQL CAE and the X/Open SQL CLI snapshot, augmented with IBM specific and
product specific SQLSTATE values.</p>
<p>If diagnostic information generated
by one DB2 UDB
CLI function is not retrieved before a function other than <samp class="codeph">SQLGetDiagRec()</samp> is
called with the same handle, the information for the previous function call
is lost. This is true whether diagnostic information is generated for the
second DB2 UDB
CLI function call.</p>
<p>Multiple diagnostic messages might be available after
a given DB2 UDB
CLI function call. These messages can be retrieved one at a time by repeatedly
calling <samp class="codeph">SQLGetDiagRec()</samp>. For each message retrieved, <samp class="codeph">SQLGetDiagRec()</samp> returns
SQL_SUCCESS and removes it from the list of messages available. When there
are no more messages to retrieve, SQL_NO_DATA_FOUND is returned, the SQLSTATE
is set to "00000", <em>pfNativeError</em> is set to 0, and <em>pcbErrorMsg</em> and <em>szErrorMsg</em> are
undefined.</p>
<p>Diagnostic information stored under a given handle is cleared
when a call is made to <samp class="codeph">SQLGetDiagRec()</samp> with that handle,
or when another DB2 UDB
CLI function call is made with that handle. However, information associated
with a given handle type is not cleared by a call to <samp class="codeph">SQLGetDiagRec()</samp>
with an associated but different handle type. For example, a call to <samp class="codeph">SQLGetDiagRec()</samp> with
a connection handle input does not clear errors associated with any statement
handles under that connection.</p>
<p>SQL_SUCCESS is returned even if the buffer
for the error message (<em>szErrorMsg</em>) is too short, because the application
is not able to retrieve the same error message by calling <samp class="codeph">SQLGetDiagRec()</samp> again.
The actual length of the message text is returned in the <em>pcbErrorMsg</em>.</p>
<p>To
avoid truncation of the error message, declare a buffer length of SQL_MAX_MESSAGE_LENGTH
+ 1. The message text is never be longer than this.</p>
</div>
<div class="section"><h4 class="sectiontitle">Return codes</h4><ul><li>SQL_SUCCESS</li>
<li>SQL_ERROR</li>
<li>SQL_INVALID_HANDLE</li>
<li>SQL_NO_DATA_FOUND</li>
</ul>
<p>SQL_NO_DATA_FOUND is returned if no diagnostic information is available
for the input handle, or if all of the messages have been retrieved through
calls to <samp class="codeph">SQLGetDiagRec()</samp>.</p>
<p>SQL_ERROR is returned if
the argument <samp class="codeph">szSqlState</samp>, <samp class="codeph">pfNativeError</samp>, <samp class="codeph">szErrorMsg</samp> ,
or <samp class="codeph">pcbErrorMsg</samp> is a null pointer. </p>
</div>
<div class="section"><h4 class="sectiontitle">Diagnostics</h4><p>SQLSTATEs are not defined because <samp class="codeph">SQLGetDiagRec()</samp> does
not generate diagnostic information for itself.</p>
</div>
<div class="section"><h4 class="sectiontitle">Restrictions</h4><p>Although ODBC also returns X/Open SQL
CAE SQLSTATEs, only DB2 UDB CLI returns the additional IBM defined SQLSTATEs.
The ODBC Driver Manager also returns SQLSTATE values in addition to the standard
ones. For more information about ODBC specific SQLSTATEs refer to <cite>Microsoft<sup>®</sup> ODBC
Programmer's Reference</cite>.</p>
<p>Because of this, you should only build
dependencies on the standard SQLSTATEs. This means any branching logic in
the application should only rely on the standard SQLSTATEs. The augmented
SQLSTATEs are most useful for debugging purposes.</p>
</div>
<div class="section"><h4 class="sectiontitle">References</h4><ul><li><a href="rzadpfndfld.htm#rzadpfndfld">SQLGetDiagField - Return diagnostic information (extensible)</a></li>
</ul>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="rzadphdapi.htm" title="This topic provides a description of each CLI function.">DB2 UDB CLI functions</a></div>
</div>
</div>
</body>
</html>