MINI MINI MANI MO
<!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="ja"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<title>Oracle® Database ODBCドライバ・オンライン・ヘルプFor Linux and Windows</title>
<meta name="doctitle" content="Oracle Database ODBC Driver Online Help, Release 2 (12.2.0.2.0) For Linux and Windows" />
<meta name="relnum" content="Release 2 (12.2.0.2.0)" />
<meta name="partnum" content="E86138-01" />
<meta name="docid" content="SQORA" />
<meta name="brand" content="" />
<meta name="generator" content="DITA Open Toolkit version 1.8.5 (Mode = ohj)" />
<meta name="plugin" content="Infodev XHTML plugin release 17.2.1" />
<meta name="date" content="2017-06-01T15:38:49Z" />
<meta name="robots" content="noarchive" />
<link rel="copyright" href="cpyr.htm" title="Copyright" type="text/html" />
<link rel="stylesheet" href="blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
<table cellpadding="0" cellspacing="0" class="simple oac_no_warn" summary="" width="100%">
<tbody><tr>
<td align="left" valign="top"><br />
<br /></td>
<td align="right" valign="bottom">
<table cellpadding="0" cellspacing="0" class="simple oac_no_warn" summary="">
<tbody><tr>
<td> </td>
<td align="left" valign="top"><a href="toc.htm"><br /> <span class="icon">目次</span></a></td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</head>
<body><div class="header"><a id="top" name="top"></a><div class="zz-skip-header"><a href="#BEGIN">ヘッダーをスキップ</a></div><table cellpadding="0" cellspacing="0" class="simple oac_no_warn" summary="" width="100%"><tr><td align="left" valign="top"><b>Oracle® Database ODBCドライバ・オンライン・ヘルプFor Linux and Windows</b><br /><b><span>リリース2 (12.2.0.2.0)</span></b><br />E86138-01</td><td valign="bottom" align="right"><table cellpadding="0" cellspacing="0" class="simple oac_no_warn" summary="" width="225"><tr><td> </td></tr></table></td></tr></table><hr /><table cellpadding="0" cellspacing="0" class="simple oac_no_warn" summary="" width="100"><tr><td> </td></tr></table>
<a name="BEGIN" id="BEGIN"></a>
</div>
<!-- class="header" -->
<div class="ind"><!-- End Header -->
<div class="letterstyle">
<h1><span>Oracle® Database</span></h1>
<p class="booktitle"><span>ODBCドライバ・オンライン・ヘルプ</span></p>
<p><span class="revnumber"><span>リリース2 (12.2.0.2.0)</span></span></p><p class="invpartnumber">E86138-01</p><p class="date">2017年6月</p>
<div class="sect2"><!-- infolevel="all" infotype="General" --><a name="GUID-7931EDFB-7A70-4BBE-903E-8A2BB09DBE9D" id="GUID-7931EDFB-7A70-4BBE-903E-8A2BB09DBE9D"></a><h2 id="SQORA-GUID-7931EDFB-7A70-4BBE-903E-8A2BB09DBE9D" class="sect2">Oracle ODBC Driverの使用方法</h2>
<div><p>この項では、次のトピックについて説明します: </p>
<div class="section"><p class="subhead1">トピック:</p></div>
<!-- class="section" -->
<ul style="list-style-type: disc;"><li><p><a href="#GUID-82579042-CDED-472F-841B-F0EAFCDEDAA1">Oracle ODBC Driverについて</a></p>
</li>
<li><p><a href="#GUID-27B82A11-FF45-43D9-8D94-7AF1D77CD320">すべてのユーザー</a></p>
</li>
<li><p><a href="#GUID-7B038D08-62E0-4D6A-890A-4211A647BDFB">上級ユーザー</a></p>
</li>
<li><p><a href="#GUID-52D0B344-1AF6-4F1A-91A4-3089ED199FFF">プログラマ</a></p>
</li>
</ul>
</div>
</div>
<a id="ADFNS1114"></a><a id="ADFNS1115"></a><a id="ADFNS1116"></a><a id="ADFNS1113"></a>
<div class="sect2"><!-- infolevel="all" infotype="General" --><a name="GUID-82579042-CDED-472F-841B-F0EAFCDEDAA1" id="GUID-82579042-CDED-472F-841B-F0EAFCDEDAA1"></a><h2 id="SQORA-GUID-82579042-CDED-472F-841B-F0EAFCDEDAA1" class="sect2">Oracle ODBC Driverについて</h2>
<div><div class="section"><p class="subhead1">ODBCとは</p></div>
<!-- class="section" -->
<div class="section"><p>Open Database Connectivity (ODBC)は、1つのアプリケーションが多くの異なるデータソースにアクセスできるようにする標準インタフェースを提供します。アプリケーションのソース・コードは、データソースごとに再コンパイルする必要がありません。データベース・ドライバは、アプリケーションを特定のデータソースにリンクします。データベース・ドライバは、アプリケーションが特定のデータソースにアクセスするためにオンデマンドで呼び出すことのできるダイナミック・リンク・ライブラリです。したがって、アプリケーションはデータベース・ドライバが存在する任意のデータソースにアクセスできます。</p>
<p>ODBCインタフェースには次のものが定義されています。</p>
<ul style="list-style-type: disc;"><li><p>ODBC関数コールのライブラリ。アプリケーションではこのライブラリを利用してデータソースに接続し、構造化問合せ言語(SQL)文を実行して結果を取り出すことができます。</p>
</li>
<li><p>SQL-99仕様に基づくSQL構文</p>
</li>
<li><p>エラー・コードの標準セット</p>
</li>
<li><p>データソースへの接続とログインの標準的な方法</p>
</li>
<li><p>データ型の標準的な表現</p>
</li>
</ul>
<p>ODBCモデルのコンポーネントを次の図に示します。ODBCアプリケーション・プログラム・インタフェース(API)を介してドライバ・マネージャをコールして、モデルはODBCアプリケーションから開始されます。ドライバ・マネージャは、Microsoftドライバ・マネージャまたはunixODBCドライバ・マネージャです。ドライバ・マネージャは、ここでもODBC APIを使用してODBCドライバをコールします。ODBCドライバは、データベースAPIを使用し、ネットワーク通信リンク経由でデータベースにアクセスします。この図は、異なる3つのデータベースにアクセスするODBCアプリケーションを示したものです。</p>
<div class="figure" id="GUID-82579042-CDED-472F-841B-F0EAFCDEDAA1__BABEIGEE"><a id="BABEIGEE" name="BABEIGEE"></a><p class="titleinfigure">図: ODBCモデルのコンポーネント</p><img alt="図の説明が続きます" longdesc="img_text/odbcmodel.htm" src="img/odbcmodel.gif" title="図の説明が続きます" /><br /><a href="img_text/odbcmodel.htm">「図: ODBCモデルのコンポーネント」の説明</a></div>
<!-- class="figure" -->
</div>
<!-- class="section" -->
<div class="section"><p class="subhead1">関連トピック</p></div>
<!-- class="section" -->
<div class="section"><p><a href="#GUID-194E8168-5320-4FF2-BABF-D125A7F4658C">Oracle ODBC Driverとは</a></p>
</div>
<!-- class="section" -->
</div>
</div>
<a id="ADFNS219"></a><a id="ADFNS1117"></a>
<div class="sect2"><!-- infolevel="all" infotype="General" --><a name="GUID-27B82A11-FF45-43D9-8D94-7AF1D77CD320" id="GUID-27B82A11-FF45-43D9-8D94-7AF1D77CD320"></a><h2 id="SQORA-GUID-27B82A11-FF45-43D9-8D94-7AF1D77CD320" class="sect2">すべてのユーザー</h2>
<div><div class="section"><p class="subhead1">トピック:</p></div>
<!-- class="section" -->
<ul style="list-style-type: disc;"><li><p><a href="#GUID-EAFDBA50-CD52-45E6-9176-D81E605FF555">Oracle ODBC Driver</a></p>
</li>
<li><p><a href="#GUID-4A5C4CB2-A510-4637-90C6-22010B6AA0D3">構成タスク</a></p>
</li>
<li><p><a href="#GUID-81BE6FBB-B0CA-4C0A-B708-9CADB5126A73">oraodbc.iniファイルの変更</a></p>
</li>
<li><p><a href="#GUID-F138E550-E14D-4417-9AE5-CC9EDE2DDE61">データソースへの接続</a></p>
</li>
<li><p><a href="#GUID-4579145F-AD46-4B1D-AD2A-ACB8AFA962F1">トラブルシューティング</a></p>
</li>
</ul>
</div>
</div>
<a id="ADFNS220"></a><a id="ADFNS1118"></a>
<div class="sect3"><!-- infolevel="all" infotype="General" --><a name="GUID-EAFDBA50-CD52-45E6-9176-D81E605FF555" id="GUID-EAFDBA50-CD52-45E6-9176-D81E605FF555"></a><h3 id="SQORA-GUID-EAFDBA50-CD52-45E6-9176-D81E605FF555" class="sect3">Oracle ODBC Driver</h3>
<div><div class="section"><p class="subhead1">トピック:</p></div>
<!-- class="section" -->
<div class="section"><ul style="list-style-type: disc;"><li><p><a href="#GUID-194E8168-5320-4FF2-BABF-D125A7F4658C">Oracle ODBC Driverとは</a></p>
</li>
<li><p><a href="#GUID-CD847FD4-7CF9-40E1-B0C0-6B9EB372E122">新機能と変更された機能</a></p>
</li>
<li><p><a href="#GUID-3FE69BEF-F8D2-4152-9B1A-877186C47028" title="Oracle ODBC 3.0 Driverでサポートされていない機能。">サポートされていない機能</a></p>
</li>
<li><p><a href="#GUID-621E2754-45F2-4808-B45A-0F59B8DEDB7C">インストールによって作成されるファイル</a></p>
</li>
<li><p><a href="#GUID-01757251-AC5C-4F24-AC58-618126910939">ドライバの準拠レベル</a></p>
</li>
<li><p><a href="#GUID-05C9DB32-1D42-497E-BCA5-A408D4385B48">既知の制限事項</a></p>
</li>
</ul>
</div>
<!-- class="section" -->
</div>
</div>
<a id="ADFNS1120"></a><a id="ADFNS1121"></a><a id="ADFNS1119"></a>
<div class="sect4"><!-- infolevel="all" infotype="General" --><a name="GUID-194E8168-5320-4FF2-BABF-D125A7F4658C" id="GUID-194E8168-5320-4FF2-BABF-D125A7F4658C"></a><h4 id="SQORA-GUID-194E8168-5320-4FF2-BABF-D125A7F4658C" class="sect4">Oracle ODBC Driverとは</h4>
<div><p>Oracle ODBC Driverを使用すると、Microsoft WindowsおよびLinux、Solaris、IBM Advanced Interactive eXecutive (AIX)などのUNIXプラットフォーム上のアプリケーションで、Oracle Net Servicesソフトウェアを使用し、ODBCインタフェースを介して、Oracleデータベースに対する読取りおよび書込みアクセスができます。</p>
<p>Oracle ODBC Driverは、Oracle Call Interface(OCI)のクライアント/サーバー・ソフトウェアを介して、データソースへの要求の送信およびデータソースからの応答を受信します。OCIクライアントとOracleサーバー間の通信には、Oracle Net Services通信プロトコルが使用されます。</p>
<p>Oracle ODBC Driverは、ODBC SQL構文をデータソースにアクセスできる構文に変換します。データソースから結果が戻されると、Oracle ODBC Driverは戻された結果をODBC SQL構文に変換します。</p>
<p>次の図は、前述のOracle ODBC Driverアーキテクチャを示したものです。</p>
<div class="figure" id="GUID-194E8168-5320-4FF2-BABF-D125A7F4658C__BABJEDJJ"><a id="BABJEDJJ" name="BABJEDJJ"></a><p class="titleinfigure">図: Oracle ODBC Driverアーキテクチャ</p><img alt="図の説明が続きます" longdesc="img_text/odbcdrvarch.htm" src="img/odbcdrvarch.gif" title="図の説明が続きます" /><br /><a href="img_text/odbcdrvarch.htm">「図: Oracle ODBC Driverアーキテクチャ」の説明</a></div>
<!-- class="figure" -->
<p>* Oracle ODBCリソース・データ定義言語(DLL)ファイル(<code class="codeph">sqres</code><code><span class="codeinlineitalic">xx</span></code><code class="codeph">.dll</code>。<code><span class="codeinlineitalic">xx</span></code>は言語の略称)には、言語に関連する全情報が含まれています。使用されるデフォルトのリソース・ファイルは<code class="codeph">sqresus.dll</code>です。</p>
<p>OCIクライアント/サーバー・ソフトウェアの詳細は、OCIのマニュアルを参照してください。</p>
<div class="section"><p class="subhead1">関連トピック</p></div>
<!-- class="section" -->
<div class="section"><p><a href="#GUID-2F0D82DF-2516-497F-9BD5-FC0CA9793D27">データソースの構成</a></p>
<p><a href="#GUID-F138E550-E14D-4417-9AE5-CC9EDE2DDE61">データソースへの接続</a></p>
<p><a href="#GUID-01757251-AC5C-4F24-AC58-618126910939">ドライバの準拠レベル</a></p>
<p><a href="#GUID-CD847FD4-7CF9-40E1-B0C0-6B9EB372E122">新機能と変更された機能</a></p>
<p><a href="#GUID-621E2754-45F2-4808-B45A-0F59B8DEDB7C">インストールによって作成されるファイル</a></p>
</div>
<!-- class="section" -->
</div>
</div>
<a id="ADFNS221"></a><a id="ADFNS1123"></a><a id="ADFNS1124"></a><a id="ADFNS1125"></a><a id="ADFNS1126"></a><a id="ADFNS1127"></a><a id="ADFNS1122"></a>
<div class="sect4"><!-- infolevel="all" infotype="General" --><a name="GUID-CD847FD4-7CF9-40E1-B0C0-6B9EB372E122" id="GUID-CD847FD4-7CF9-40E1-B0C0-6B9EB372E122"></a><h4 id="SQORA-GUID-CD847FD4-7CF9-40E1-B0C0-6B9EB372E122" class="sect4">新機能と変更された機能</h4>
<div><div class="section"><p class="subhead1">トピック:</p></div>
<!-- class="section" -->
<div class="section"><ul style="list-style-type: disc;"><li><p><a href="#GUID-CD847FD4-7CF9-40E1-B0C0-6B9EB372E122__NEWFEATURESFORORACLEODBCDRIVERRELEA-B96ED8B3">Oracle ODBC Driverリリース12.2.0.2.0の新機能</a></p>
</li>
<li><p><a href="#GUID-CD847FD4-7CF9-40E1-B0C0-6B9EB372E122__NEWFEATURESFORORACLEODBCDRIVERRELEA-62DD4172">Oracle ODBC Driverリリース12.2.0.1.0の新機能</a></p>
</li>
<li><p><a href="#GUID-CD847FD4-7CF9-40E1-B0C0-6B9EB372E122__BABEDIHI">Oracle ODBC Driverリリース12.1.0.1.0の新機能</a></p>
</li>
<li><p><a href="#GUID-CD847FD4-7CF9-40E1-B0C0-6B9EB372E122__BABEDIJI">Oracle ODBC Driverリリース12.1.0.2.0の新機能</a></p>
</li>
<li><p><a href="#GUID-CD847FD4-7CF9-40E1-B0C0-6B9EB372E122__BABBFBBG">Oracle ODBC Driverリリース11.2.0.1.0の新機能</a></p>
</li>
<li><p><a href="#GUID-CD847FD4-7CF9-40E1-B0C0-6B9EB372E122__BABHBGGB">Oracle ODBC Driverリリース11.1.0.1.0の新機能</a></p>
</li>
<li><p><a href="#GUID-CD847FD4-7CF9-40E1-B0C0-6B9EB372E122__BABDABCJ">Oracle ODBC Driverリリース10.1.0.2.0の新機能</a></p>
</li>
<li><p><a href="#GUID-CD847FD4-7CF9-40E1-B0C0-6B9EB372E122__BABCCDCJ">Oracle ODBC Driverリリース10.1.0.2.0の変更</a></p>
</li>
</ul>
</div>
<!-- class="section" -->
<div class="section" id="GUID-CD847FD4-7CF9-40E1-B0C0-6B9EB372E122__NEWFEATURESFORORACLEODBCDRIVERRELEA-B96ED8B3"><a id="NEWFEATURESFORORACLEODBCDRIVERRELEA-B96ED8B3" name="NEWFEATURESFORORACLEODBCDRIVERRELEA-B96ED8B3"></a><p class="subhead1">Oracle ODBC Driverリリース12.2.0.2.0の新機能</p><div class="p">Microsoft Windows Server 2008、Windows Server 2008 R2、Windows Server 2012、Windows Server 2012 R2、Windows 7、Windows 8、Windows 8.1、Windows 10、Linux X86-64 (32/64ビット)、Sun Solaris SPARC64 (32/64ビット)、IBM AIX 5L (32/64ビット)、Sun Solaris X64 (32/64ビット)、HPUX IA64 (32/64ビット)、ZLinux (32/64ビット)オペレーティング・システム用のOracle ODBC Driverリリース12.2.0.1.0ソフトウェアの機能は次のとおりです。<ul style="list-style-type: disc;"><li><p>unixODBC ODBCドライバ・マネージャは、unixODBC–2.3.2からunixODBC–2.3.4にアップグレードされています。</p>
</li>
</ul>
</div>
</div>
<!-- class="section" -->
<div class="section" id="GUID-CD847FD4-7CF9-40E1-B0C0-6B9EB372E122__NEWFEATURESFORORACLEODBCDRIVERRELEA-62DD4172"><a id="NEWFEATURESFORORACLEODBCDRIVERRELEA-62DD4172" name="NEWFEATURESFORORACLEODBCDRIVERRELEA-62DD4172"></a><p class="subhead1">Oracle ODBC Driverリリース12.2.0.1.0の新機能</p><p>Microsoft Windows Server 2008、Windows Server 2008 R2、Windows Server 2012、Windows Server 2012 R2、Windows 7、Windows 8、Windows 8.1、Windows 10、Linux X86-64 (32/64ビット)、Sun Solaris SPARC64 (32/64ビット)、IBM AIX 5L (32/64ビット)、Sun Solaris X64 (32/64ビット)、HPUX IA64 (32/64ビット)、ZLinux (32/64ビット)オペレーティング・システム用のOracle ODBC Driverリリース12.2.0.1.0ソフトウェアの機能は次のとおりです。</p>
<ul style="list-style-type: disc;"><li><p>長い識別子のサポートが追加されています。</p>
<p>Oracle ODBC Driverは、128バイトのオブジェクト長をサポートするようになりました。以前のリリースでは、オブジェクト長の制限は30バイトでした。</p>
</li>
<li><p>タイム・ゾーン付きのタイム・スタンプおよびローカル・タイム・ゾーン付きのタイム・スタンプのサポートが追加されています。</p>
<p>この機能により、ODBC <code class="codeph">TIMESTAMP</code>データ型を使用している既存のODBCアプリケーションの変更は必要ありません。既存のアプリケーションがODBC <code class="codeph">TIMESTAMP</code>データ型を使用し、データベース列が<code class="codeph">TIMESTAMP</code>である場合、現在の動作が保持されます。 </p>
<p>データベース列<code class="codeph">TIMESTAMP WITH TIMEZONE</code>または<code class="codeph">TIMESTAMP WITH LOCAL TIMEZONE</code>の場合、ODBC <code class="codeph">TIMESTAMP_STRUCT</code>の時間コンポーネントは、ユーザーのセッションのタイム・ゾーンになります。この動作はユーザーのアプリケーションに透過的で、ODBCアプリケーションへの変更は必要ありません。</p>
</li>
</ul>
</div>
<!-- class="section" -->
<div class="section" id="GUID-CD847FD4-7CF9-40E1-B0C0-6B9EB372E122__BABEDIJI"><a id="BABEDIJI" name="BABEDIJI"></a><p class="subhead1">Oracle ODBC Driverリリース12.1.0.2.0の新機能</p><p>Microsoft Windows Server 2008、Windows Server 2008 R2、Windows Server 2012、Windows 7、Windows 8、Windows 10、Linux X86-64 (32/64ビット)、Sun Solaris SPARC64 (32/64ビット)、IBM AIX 5L (32/64ビット)、Sun Solaris X64 (32/64ビット)、HPUX IA64 (32/64ビット)、ZLinux (32/64ビット)オペレーティング・システム用のOracle ODBC Driverリリース12.1.0.2.0ソフトウェアの機能は次のとおりです。</p>
<p>Microsoft Windows 10プラットフォームが追加されています。</p>
</div>
<!-- class="section" -->
<div class="section" id="GUID-CD847FD4-7CF9-40E1-B0C0-6B9EB372E122__BABEDIHI"><a id="BABEDIHI" name="BABEDIHI"></a><p class="subhead1">Oracle ODBC Driverリリース12.1.0.1.0の新機能</p><p>Microsoft Windows Server 2008、Windows Server 2008 R2、Windows Server 2012、Windows 7、Windows 8、Linux X86-64 (32/64ビット)、Sun Solaris SPARC64 (32/64ビット)、IBM AIX 5L (32/64ビット)、Sun Solaris X64 (32/64ビット)、HPUX IA64 (32/64ビット)、ZLinux (32/64ビット)オペレーティング・システム用のOracle ODBC Driverリリース12.1.0.1.0ソフトウェアの機能は次のとおりです。</p>
<ul style="list-style-type: disc;"><li><p>Oracle ODBC Driverは、<code class="codeph">VARCHAR2</code>、<code class="codeph">NVARCHAR2</code>および<code class="codeph">RAW</code>データで32 KBデータ列をサポートするようになりました。</p>
</li>
<li><p><code class="codeph">odbc.ini</code>ファイルまたは接続レベル属性の新しいパラメータ:</p>
<ul style="list-style-type: disc;"><li><p><code class="codeph">SQL_TRANSLATE_ERRORS = {T|F}</code> [デフォルトは<code class="codeph">F</code> (false)]</p>
<p>SQL翻訳フレームワーク機能を使用している移行済のサード・パーティODBCアプリケーションでは、サーバーから返されるエラーがネイティブ・データベース形式を取ると予想されます。ユーザーは、SQL翻訳フレームワーク・モードで稼働しているOracle DatabaseのSQL翻訳プロファイルにエラーの翻訳を登録できます。エラーの翻訳が登録されたら、ODBCアプリケーションのユーザーはオプション<code class="codeph">SQLTranslateErrors = T</code>を有効化し、登録に従ってネイティブ・エラーを受け取ることができます。</p>
</li>
</ul>
<p>詳細は、<a href="#GUID-618B141E-DD46-4907-99C2-486E801CA878__BABEFBFB" title="この表では、SQLDrivedConnect関数の接続文字列引数に組み込むことができるキーワードを示しています。">「表: SQLDriverConnect関数コールの接続文字列引数に組み込むことができるキーワード」</a>を参照してください。</p>
</li>
<li><p>Oracle ODBCドライバが、<code class="codeph">RefCursor</code>を使用せずに暗黙的結果を返すことのできるストアド・プロシージャの実行をサポートするようになりました。このサポートにより、Oracleに移行したサード・パーティのODBCアプリケーションで、旧ベンダーが提供していたこの同じ機能を使用しやすくなります。</p>
</li>
<li><p>Oracleデータベースの自動増分機能をサポートするための<code class="codeph">SQLColAttribute()</code>フィールド識別子の拡張サポート。Oracle ODBC Driver固有のヘッダー・ファイル<code class="codeph">sqora.h</code>をアプリケーションに含めることで、この機能を使用できます。</p>
<ul style="list-style-type: disc;"><li><p><code class="codeph">SQL_COLUMN_AUTO_INCREMENT</code></p>
<p>Oracle Database 12<span class="italic">c</span>リリース1 (12.1.0.1)以降では、Oracleが自動増分列をサポートするため、Oracle ODBC Driverは既存の<code class="codeph">SQLColAttribute()</code>識別子<code class="codeph">SQL_COLUMN_AUTO_INCREMENT</code>を通じて同じサポートを拡張しました。このプロパティは読取り専用であり、列が自動増分の場合に<code class="codeph">SQL_TRUE</code>を返し、それ以外の場合に<code class="codeph">SQL_FALSE</code>を返します。</p>
</li>
<li><p><code class="codeph">SQL_ORCLATTR_COLUMN_PROP</code></p>
<p>Oracle Database 12<span class="italic">c</span>リリース1 (12.1.0.1)以降では、Oracle ODBC Driverは、列の属性を返す新しいドライバ固有フィールド識別子<code class="codeph">SQL_ORCLATTR_COLUMN_PROP</code>をサポートします。この識別子は、次に示すようにすべての列プロパティを持つ<code class="codeph">SQLULEN</code>値を返します。</p>
<pre class="oac_no_warn" dir="ltr">+-----------------------------------------+
| 32 |...| 10 | 9 | 8 |......| 3 | 2 | 1 |
+-----------------------------------------+
| | |
| | |-> Column is auto-increment?
| |-> Auto value is always generated?
|-> If generated by default when null?
</pre>
</li>
</ul>
</li>
<li><p>Oracle Database 12<span class="italic">c</span>リリース1 (12.1.0.1)でサポートされるODBC API</p>
<ul style="list-style-type: disc;"><li><p><code class="codeph">SQLMoreResults()</code></p>
<p>暗黙的結果のODBCサポートを実装します。</p>
</li>
</ul>
</li>
</ul>
</div>
<!-- class="section" -->
<div class="section" id="GUID-CD847FD4-7CF9-40E1-B0C0-6B9EB372E122__BABBFBBG"><a id="BABBFBBG" name="BABBFBBG"></a><p class="subhead1">Oracle ODBC Driverリリース11.2.0.1.0の新機能</p><p>Microsoft Windows XP、Microsoft Windows 2003 Server、Microsoft Windows Vista、Linux X86-32 (RHEL AS 4、5)、Linux X86-64 (RHEL AS 4、5)(32/64ビット)、Sun Solaris SPARC64 (9、10)(32/64ビット)、IBM AIX 5L 5.2 (32/64ビット)、Linux IA64 (64ビット)、Linux on Power (32/64ビット)、Sun Solaris X64 (64ビット)、Hewlett Packard Itanium (32/64ビット)オペレーティング・システム用のOracle ODBC Driverリリース11.2.0.1.0ソフトウェアの機能は次のとおりです。</p>
<ul style="list-style-type: disc;"><li><p><code class="codeph">LONG</code>および<code class="codeph">LONG</code> <code class="codeph">RAW</code>データのプリフェッチ</p>
<p>Oracle ODBC Driverは、ODBCアプリケーションのパフォーマンスを向上させるために、<code class="codeph">LONG</code>または<code class="codeph">LONG RAW</code>データをプリフェッチするように拡張されています。これを行うには、Windowsでは<code class="codeph">LONG</code>データの最大サイズ(<code class="codeph">MaxLargeData</code>)をレジストリに設定し(データソース名(DSN)にレジストリ・キー<code class="codeph">MaxLargeData</code>を追加する必要もあります)、UNIXプラットフォームでは<code class="codeph">odbc.ini</code>ファイルにこれを手動で設定する必要があります。この機能強化により、ユーザーが設定した<code class="codeph">MaxLargeData</code>サイズに応じてOracle ODBC Driverのパフォーマンスが最大10倍向上します。<code class="codeph">MaxLargeData</code>のデフォルト値は0です。設定できる<code class="codeph">MaxLargeData</code>の最大値は64KB (65536バイト)です。 </p>
<p><code class="codeph">MaxLargeData</code>の値が65536より大きい値に設定されていても、フェッチされるデータは65536バイトのみです。データベースに65536バイトより大きい<code class="codeph">LONG</code>または<code class="codeph">LONG RAW</code>データが含まれる場合、<code class="codeph">MaxLargeData</code>を単一行フェッチが発生して完全な<code class="codeph">LONG</code>データをフェッチする0(デフォルト値)に設定します。ポーリング以外のモードで<code class="codeph">MaxLargeData</code>サイズより少ないバッファ・サイズを渡すと、データベースの<code class="codeph">LONG</code>データ・サイズがバッファ・サイズより大きい場合には、データの切捨てエラーが発生します。</p>
</li>
<li><p>メタデータをフェッチするための<code class="codeph">OCIDescribeAny()</code>の使用オプション</p>
<p>アプリケーションが、<code class="codeph">REF CURSORS</code>を返す小さなパッケージ・プロシージャを大量にコールする場合、ドライバに<code class="codeph">OCIDescribeAny()</code>の使用を強制することでパフォーマンスを向上させることができます。このオプションを有効にするには、UNIXプラットフォームで、またWindowsではレジストリを使用して、<code class="codeph">odbc.ini</code>の<code class="codeph">UseOCIDescribeAny</code>の値を<code class="codeph">T</code>(True)に設定します。デフォルト値は<code class="codeph">F</code>(False)です。 </p>
</li>
</ul>
</div>
<!-- class="section" -->
<div class="section" id="GUID-CD847FD4-7CF9-40E1-B0C0-6B9EB372E122__BABHBGGB"><a id="BABHBGGB" name="BABHBGGB"></a><p class="subhead1">Oracle ODBC Driverリリース11.1.0.1.0の新機能</p><p>Windows XP、Linux、SolarisおよびIBM AIXオペレーティング・システム用のOracle ODBC Driverリリース11.1.0.1.0ソフトウェアの機能は次のとおりです。</p>
<ul style="list-style-type: disc;"><li><p>RULEヒントを無効化(DRH接続文字列)</p>
<p>新しい接続オプション「RULEヒントを無効化」が追加されました。これにより、ユーザーは、カタログAPIでRULEヒントを使用するかどうかを選択するオプションを指定できます。カタログAPIのODBCドライバのパフォーマンスを向上させるための変更が行われました。オプションのデフォルト値は、RULEヒントがカタログAPIで使用されないことを意味する<code class="codeph">TRUE</code>です。</p>
</li>
<li><p>NUMBERをFLOATとしてバインド(BNF接続文字列)</p>
<p>新しい接続オプション「NUMBERをFLOATとしてバインド」が追加されました。列に浮動小数点データが含まれる場合に<code class="codeph">FLOAT</code>としての<code class="codeph">NUMBER</code>列の列バインディングを導入することにより、バインド変数を<code class="codeph">FLOAT</code>として使用する問合せ実行が高速になります。</p>
</li>
<li><p>文キャッシング</p>
<p>各セッションの文のキャッシュを提供および管理するOCI文キャッシュ機能のサポートが追加されました。OCI文のキャッシュ・オプションのサポートを実装することで、ユーザーが同じ接続で同じ文を複数回解析する場合にOracle ODBC Driverのパフォーマンスが向上します。文キャッシュ・フラグのデフォルト値は<code class="codeph">FALSE</code>です。</p>
</li>
</ul>
</div>
<!-- class="section" -->
<div class="section" id="GUID-CD847FD4-7CF9-40E1-B0C0-6B9EB372E122__BABDABCJ"><a id="BABDABCJ" name="BABDABCJ"></a><p class="subhead1">Oracle ODBC Driverリリース10.1.0.2.0の新機能</p><p>Windows 98、Windows 2000、Windows XPおよびWindows NT X86オペレーティング・システム用のOracle ODBC Driverリリース10.1.0.2.0ソフトウェアの機能は次のとおりです。</p>
<ul style="list-style-type: disc;"><li><p><code class="codeph">TIMESTAMP</code>を<code class="codeph">DATE</code>としてバインド(BTD接続文字列)</p>
<p>新規の「<code class="codeph">TIMESTAMP</code>を<code class="codeph">DATE</code>としてバインド」接続オプションが追加されました。これによりODBCドライバの<code class="codeph">SQL_TIMESTAMP</code>データ型を、Oracleの<code class="codeph">TIMESTAMP</code>データ型ではなく<code class="codeph">DATE</code>データ型でバインドできます(これはデフォルトです)。</p>
</li>
<li><p><code class="codeph">MONTHNAME (exp)</code>関数</p>
<p>日付式で表される月の名前を返す<code class="codeph">MONTHNAME (exp)</code>関数のサポートが追加されました。たとえば、「April」などです。</p>
</li>
<li><p><code class="codeph">DAYNAME (exp) </code>関数</p>
<p>日付式で表される日の名前を返す<code class="codeph">DAYNAME (exp)</code>関数のサポートが追加されました。たとえば、「Tuesday」などです。</p>
</li>
<li><p>インスタント・クライアントの構成</p>
<p>インスタント・クライアント・モードの構成がサポートされるようになりました。</p>
</li>
</ul>
</div>
<!-- class="section" -->
<div class="section" id="GUID-CD847FD4-7CF9-40E1-B0C0-6B9EB372E122__BABCCDCJ"><a id="BABCCDCJ" name="BABCCDCJ"></a><p class="subhead1">Oracle ODBC Driverリリース10.1.0.2.0の変更</p><p>Oracle ODBC Driverリリース10.1.0.2.0で変更された機能、また将来廃止される可能性のある機能は次のとおりです。</p>
<ul style="list-style-type: disc;"><li><p>Microsoft Transaction Serverの無効化</p>
<p>Microsoft Transaction Server (MTS)を無効にするデフォルト設定が、<code class="codeph">FALSE</code>から<code class="codeph">TRUE</code>に変更されました。MTSのサポートは、デフォルトで無効になっています。</p>
</li>
<li><p>浮動小数点のデータ型</p>
<p>Oracleのデータ型である<code class="codeph">BINARY_FLOAT</code>および<code class="codeph">BINARY_DOUBLE</code>は、ODBCデータ型の<code class="codeph">SQL_REAL</code>および<code class="codeph">SQL_DOUBLE</code>にそれぞれマップされるように変更されました。</p>
</li>
<li><p>SQLGetDataの拡張(GDE接続文字列)</p>
<p>このリリースでは、<code class="codeph">SQLGetData</code>の拡張接続は廃止されました。このオプションの機能は常に使用できます。</p>
</li>
<li><p>LONG列の強制取り出し(FRL接続文字列)</p>
<p>このリリースでは、「LONG列強制取り出し」接続オプションは廃止されました。このオプションの機能は常に使用できます。</p>
</li>
<li><p>「翻訳オプション」構成タブ</p>
<p>このリリースでは、「Oracle ODBCドライバ構成」ダイアログ・ボックスにあった「翻訳オプション」タブが削除されました。</p>
</li>
<li><p>リリース・ノート</p>
<p>リリース・ノートのファイル名が、<code class="codeph">ODBCRelnotes.wri</code>から<code class="codeph">ODBCRelnotesUS.htm</code>に変更されました。 </p>
</li>
</ul>
<div align="center"><div class="inftblnotealso" id="GUID-CD847FD4-7CF9-40E1-B0C0-6B9EB372E122__GUID-D2A3992C-D394-4847-A88A-2DB6C793C663"><a id="GUID-D2A3992C-D394-4847-A88A-2DB6C793C663" name="GUID-D2A3992C-D394-4847-A88A-2DB6C793C663"></a><br /><table cellpadding="3" cellspacing="0" class="NoteAlso oac_no_warn" summary=""><tbody><tr><td><p class="notep1">関連項目:</p><ul style="list-style-type: disc;"><li><p><code class="codeph">Timestamp</code>例は、<a href="#GUID-2FEED4F9-9AB8-4CA8-8AA5-C4F2ED862F8E">「ODBCのOracle TIMESTAMP WITH TIME ZONEおよびTIMESTAMP WITH LOCAL TIME ZONE列型のサポートについて」</a>を参照してください</p>
</li>
<li><p>32KBの列の作成は、<a href="olink:LNPLS99943" target="_blank"><span class="italic">『Oracle Database PL/SQL言語リファレンス』</span></a>および<a href="olink:SQLRF55623" target="_blank"><span class="italic">『Oracle Database SQL言語リファレンス』</span></a>を参照してください。</p>
</li>
<li><p>SQL翻訳フレームワークの詳細は、<a href="olink:DRDAA131" target="_blank">SQL翻訳フレームワークのアーキテクチャと概要</a>、<a href="olink:DRDAA132" target="_blank">翻訳フレームワークのインストールと構成</a>および<a href="olink:DRDAA133" target="_blank">移行例</a>を参照してください</p>
</li>
<li><p>Oracle Databaseによる暗黙的結果のサポートの詳細は、<a href="olink:DRDAA230" target="_blank"><span class="italic">Oracle Database移行ガイド</span></a>を参照してください</p>
</li>
<li><p>自動増分の詳細は、<a href="olink:LNOCI16468" target="_blank"><span class="italic">『Oracle Call Interfaceプログラマーズ・ガイド』</span></a>を参照してください</p>
</li>
<li><p><code class="codeph">SQLMoreResults()</code>関数の詳細は、<a href="#GUID-37A82452-DE02-4E07-9071-520549D23552__BABIIHAC" title="この表は、Oracle ODBC Driverが関数を実装する方法を示したものです。">表: Oracle ODBC Driverで特定の関数を実装する方法</a>および<a href="unilink:sql_more_results_function" target="_blank">SQLMoreResults関数</a>を参照してください</p>
</li>
</ul>
</td></tr></tbody></table><br /></div></div>
</div>
<!-- class="section" -->
</div>
</div>
<a id="ADFNS1129"></a><a id="ADFNS1128"></a>
<div class="sect4"><!-- infolevel="all" infotype="General" --><a name="GUID-3FE69BEF-F8D2-4152-9B1A-877186C47028" id="GUID-3FE69BEF-F8D2-4152-9B1A-877186C47028"></a><h4 id="SQORA-GUID-3FE69BEF-F8D2-4152-9B1A-877186C47028" class="sect4">サポートされていない機能</h4>
<div><p>Oracle ODBC 3.0 Driverでサポートされていない機能。</p>
<p>Oracle ODBC Driverは、ODBC 3.0の次にあげる機能はサポートしていません。</p>
<ul style="list-style-type: disc;"><li><p>期間データ型</p>
</li>
<li><p><code class="codeph">SQL_C_UBIGINT</code>および<code class="codeph">SQL_C_SBIGINT</code> Cデータ型識別子</p>
</li>
<li><p>共有接続</p>
</li>
<li><p>共有環境</p>
</li>
<li><p><code class="codeph">SQLSetConnectAttr</code>の<code class="codeph">SQL_LOGIN_TIMEOUT</code>属性</p>
</li>
</ul>
<p> Oracle ODBC Driverは、次にあげるSQL文字列関数はサポートしていません。</p>
<ul style="list-style-type: disc;"><li><p><code class="codeph">BIT_LENGTH</code></p>
</li>
<li><p><code class="codeph">CHAR_LENGTH</code></p>
</li>
<li><p><code class="codeph">CHARACTER_LENGTH</code></p>
</li>
<li><p><code class="codeph">DIFFERENCE</code></p>
</li>
<li><p><code class="codeph">OCTET_LENGTH</code></p>
</li>
<li><p><code class="codeph">POSITION</code></p>
</li>
</ul>
<p>Oracle ODBC Driverは、次にあげるSQL数値関数はサポートしていません</p>
<ul style="list-style-type: disc;"><li><p><code class="codeph">ACOS</code></p>
</li>
<li><p><code class="codeph">ASIN</code></p>
</li>
<li><p><code class="codeph">ATAN</code></p>
</li>
<li><p><code class="codeph">ATAN2</code></p>
</li>
<li><p><code class="codeph">COT</code></p>
</li>
<li><p><code class="codeph">DEGREES</code></p>
</li>
<li><p><code class="codeph">RADIANS</code></p>
</li>
<li><p><code class="codeph">RAND</code></p>
</li>
<li><p><code class="codeph">ROUND</code></p>
</li>
</ul>
<p>Oracle ODBC Driverは、次にあげるSQL時間、日付および間隔関数はサポートしていません。</p>
<ul style="list-style-type: disc;"><li><p><code class="codeph">CURRENT_DATE</code></p>
</li>
<li><p><code class="codeph">CURRENT_TIME</code></p>
</li>
<li><p><code class="codeph">CURRENT_TIMESTAMP</code></p>
</li>
<li><p><code class="codeph">EXTRACT</code></p>
</li>
<li><p><code class="codeph">TIMESTAMPDIFF</code></p>
</li>
</ul>
</div>
</div>
<a id="ADFNS1131"></a><a id="ADFNS1132"></a><a id="ADFNS1133"></a><a id="ADFNS1130"></a>
<div class="sect4"><!-- infolevel="all" infotype="General" --><a name="GUID-621E2754-45F2-4808-B45A-0F59B8DEDB7C" id="GUID-621E2754-45F2-4808-B45A-0F59B8DEDB7C"></a><h4 id="SQORA-GUID-621E2754-45F2-4808-B45A-0F59B8DEDB7C" class="sect4">インストールによって作成されるファイル</h4>
<div><p>次の表に、Oracle ODBC Driverキットによってインストールされるファイルを示します。</p>
<div class="tblformal" id="GUID-621E2754-45F2-4808-B45A-0F59B8DEDB7C__BABFJJBD">
<a id="BABFJJBD" name="BABFJJBD"></a><p class="titleintable">表: Oracle ODBC Driverキットでインストールされるファイル</p>
<table border="1" cellpadding="4" cellspacing="0" class="Formal" frame="hsides" rules="rows" summary="この表では、UNIXおよびWindowsプラットフォーム用のOracle ODBC Driverキットによってインストールされるファイルと、各ファイルの機能の簡単な説明を示しています。" title="Oracle ODBC Driverキットでインストールされるファイル" width="100%"><thead><tr align="left" valign="top"><th align="left" valign="bottom" width="32%" id="d1835e38">説明</th>
<th align="left" valign="bottom" width="32%" id="d1835e41">Windowsインストールのファイル名</th>
<th align="left" valign="bottom" width="35%" id="d1835e44">UNIXインストールのファイル名</th>
</tr>
</thead>
<tbody><tr align="left" valign="top"><td align="left" valign="top" width="32%" id="d1835e49" headers="d1835e38 "><p>Oracle ODBCデータベース・アクセスDLL</p>
</td>
<td align="left" valign="top" width="32%" headers="d1835e49 d1835e41 "><p><code class="codeph">sqora32.dll</code></p>
</td>
<td align="left" valign="top" width="35%" headers="d1835e49 d1835e44 "><p>libsqora.so.12.1</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="32%" id="d1835e60" headers="d1835e38 "><p>Oracle ODBC Driver設定DLL</p>
</td>
<td align="left" valign="top" width="32%" headers="d1835e60 d1835e41 "><p><code class="codeph">sqoras32.dll</code></p>
</td>
<td align="left" valign="top" width="35%" headers="d1835e60 d1835e44 "><p>なし</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="32%" id="d1835e71" headers="d1835e38 "><p>Oracle ODBCリソースDLL</p>
</td>
<td align="left" valign="top" width="32%" headers="d1835e71 d1835e41 "><p><code class="codeph">sqresus.dll</code></p>
</td>
<td align="left" valign="top" width="35%" headers="d1835e71 d1835e44 "><p>なし</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="32%" id="d1835e82" headers="d1835e38 "><p>日本語用のOracle ODBCリソースDLL</p>
</td>
<td align="left" valign="top" width="32%" headers="d1835e82 d1835e41 "><p><code class="codeph">sqresja.dll</code></p>
</td>
<td align="left" valign="top" width="35%" headers="d1835e82 d1835e44 "><p>なし</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="32%" id="d1835e93" headers="d1835e38 "><p>Oracle ODBC Driverメッセージ・ファイル</p>
</td>
<td align="left" valign="top" width="32%" headers="d1835e93 d1835e41 "><p><code class="codeph">oraodbcus.msb</code></p>
</td>
<td align="left" valign="top" width="35%" headers="d1835e93 d1835e44 "><p><code class="codeph">oraodbcus.msb</code></p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="32%" id="d1835e105" headers="d1835e38 "><p>日本語用のOracle ODBC Driverメッセージ・ファイル</p>
</td>
<td align="left" valign="top" width="32%" headers="d1835e105 d1835e41 "><p><code class="codeph">oraodbcja.msb</code></p>
</td>
<td align="left" valign="top" width="35%" headers="d1835e105 d1835e44 "><p><code class="codeph">oraodbcja.msb</code></p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="32%" id="d1835e117" headers="d1835e38 "><p>Oracle ODBC Driverリリース・ノート</p>
</td>
<td align="left" valign="top" width="32%" headers="d1835e117 d1835e41 "><p><a href="olink:ODBCR-GUID-3CCF5B7E-BC73-4935-8B6B-214831BB31C3" target="_blank"><span><cite>Oracle Database ODBC Driverリリース・ノート</cite></span></a></p>
</td>
<td align="left" valign="top" width="35%" headers="d1835e117 d1835e44 "><p><a href="olink:ODBCR-GUID-3CCF5B7E-BC73-4935-8B6B-214831BB31C3" target="_blank"><span><cite>Oracle Database ODBC Driverリリース・ノート</cite></span></a></p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="32%" id="d1835e135" headers="d1835e38 "><p>Oracle ODBC Driver Instant Clientリリース・ノート</p>
</td>
<td align="left" valign="top" width="32%" headers="d1835e135 d1835e41 "><p><code class="codeph">ODBC_IC_Readme_Win.html</code></p>
</td>
<td align="left" valign="top" width="35%" headers="d1835e135 d1835e44 "><p><code class="codeph">ODBC_IC_Readme_Unix.html</code></p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="32%" id="d1835e147" headers="d1835e38 "><p>Oracle ODBC Driverヘルプ・ファイル</p>
</td>
<td align="left" valign="top" width="32%" headers="d1835e147 d1835e41 "><p><code class="codeph">sqora.chm</code></p>
</td>
<td align="left" valign="top" width="35%" headers="d1835e147 d1835e44 "><p><code class="codeph">sqora.chm</code></p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="32%" id="d1835e159" headers="d1835e38 "><p>日本語用のOracle ODBC Driverヘルプ・ファイル</p>
</td>
<td align="left" valign="top" width="32%" headers="d1835e159 d1835e41 "><p><code class="codeph">sqora.chm</code></p>
</td>
<td align="left" valign="top" width="35%" headers="d1835e159 d1835e44 "><p><code class="codeph">sqora.chm</code></p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="32%" id="d1835e171" headers="d1835e38 "><p>Oracle ODBC Driver Instant Clientインストール・スクリプト</p>
</td>
<td align="left" valign="top" width="32%" headers="d1835e171 d1835e41 "><p><code class="codeph">odbc_install.exe</code></p>
</td>
<td align="left" valign="top" width="35%" headers="d1835e171 d1835e44 "><p><code class="codeph">odbc_update_ini.sh</code></p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="32%" id="d1835e184" headers="d1835e38 "><p>Oracle ODBC Driver Instant Clientアンインストール・スクリプト</p>
</td>
<td align="left" valign="top" width="32%" headers="d1835e184 d1835e41 "><p><code class="codeph">odbc_uninstall.exe</code></p>
</td>
<td align="left" valign="top" width="35%" headers="d1835e184 d1835e44 "><p>なし</p>
</td>
</tr>
</tbody>
</table>
</div>
<!-- class="inftblhruleinformal" -->
<div class="section"><p class="subhead1">Microsoftドライバ・マネージャおよびAdministratorファイル</p></div>
<!-- class="section" -->
<div class="section"><p>Microsoft ODBC 3.52コンポーネントとともにインストールされるファイルのリストは、Microsoft ODBC 3.52 Software Development Kit and Programmer's Referenceを参照してください。</p>
<p>Microsoft ODBCコンポーネントは、Microsoft Data Access Component (MDAC)キットに含まれています。WindowsのOracle ODBC Driverは、MDACバージョン2.8を使用してテストされています。 </p>
</div>
<!-- class="section" -->
<div class="section"><p class="subhead1">unixODBCドライバ・マネージャおよびAdministratorファイル</p></div>
<!-- class="section" -->
<div class="section"><p>unixODBCドライバ・マネージャとともにインストールされるファイルのリストは、unixODBCのREADMEファイルおよびINSTALLファイルを参照してください。</p>
</div>
<!-- class="section" -->
<div class="section"><div align="center"><div class="inftblnotealso" id="GUID-621E2754-45F2-4808-B45A-0F59B8DEDB7C__NOTE-1263-CB4103C1"><a id="NOTE-1263-CB4103C1" name="NOTE-1263-CB4103C1"></a><br /><table cellpadding="3" cellspacing="0" class="NoteAlso oac_no_warn" summary=""><tbody><tr><td><p class="notep1">関連項目:</p><ul style="list-style-type: disc;"><li><p>MDACキットをダウンロードする<a href="unilink:odbc_mdac_kit" target="_blank"><code class="codeph">MDAC Kit</code></a></p>
</li>
<li><p>unixODBCドライバをダウンロードする<a href="unilink:unix_odbc" target="_blank">Unix ODBCドライバ・マネージャ</a> </p>
</li>
</ul>
</td></tr></tbody></table><br /></div></div>
</div>
<!-- class="section" -->
</div>
</div>
<a id="ADFNS1134"></a>
<div class="sect4"><!-- infolevel="all" infotype="General" --><a name="GUID-01757251-AC5C-4F24-AC58-618126910939" id="GUID-01757251-AC5C-4F24-AC58-618126910939"></a><h4 id="SQORA-GUID-01757251-AC5C-4F24-AC58-618126910939" class="sect4">ドライバの準拠レベル</h4>
<div><p>ODBCは、次の2つの分野でドライバの準拠レベルを定義しています。</p>
<ul style="list-style-type: disc;"><li><p>ODBC Application Program Interface (API)</p>
</li>
<li><p>ODBC SQL-99の構文</p>
</li>
</ul>
<p>Oracle ODBC Driverは、APIのすべてのコア機能と、レベル1およびレベル2機能セットの一部をサポートしています。</p>
<p>Oracle ODBC DriverはSQL-92のエントリ・レベル仕様のスーパーセットであるSQL-99のコア仕様と広く互換性があります。SQL-99でサポートされる機能のリストを取得するには、アプリケーションにおいて適切な情報型を指定してSQLGetInfoをコールしてください。</p>
<div align="center"><div class="inftblnotealso" id="GUID-01757251-AC5C-4F24-AC58-618126910939__NOTE-125-CB45540A"><a id="NOTE-125-CB45540A" name="NOTE-125-CB45540A"></a><br /><table cellpadding="3" cellspacing="0" class="NoteAlso oac_no_warn" summary=""><tbody><tr><td><p class="notep1">関連項目:</p><p>コアAPI機能サポートの詳細は、<a href="#GUID-32A9C4C1-2CE2-4533-8C46-3095DCF361B9">「API準拠」</a>を参照してください</p>
</td></tr></tbody></table><br /></div></div>
</div>
</div>
<a id="ADFNS1135"></a>
<div class="sect4"><!-- infolevel="all" infotype="General" --><a name="GUID-05C9DB32-1D42-497E-BCA5-A408D4385B48" id="GUID-05C9DB32-1D42-497E-BCA5-A408D4385B48"></a><h4 id="SQORA-GUID-05C9DB32-1D42-497E-BCA5-A408D4385B48" class="sect4">既知の制限事項</h4>
<div><p>次の事項は、Oracle ODBC Driverではサポートされていません。</p>
<ul style="list-style-type: disc;"><li><p>ODBC ASYNCインタフェース</p>
</li>
<li><p>アプリケーションでの[Ctrl]+[C]を使用した取消し</p>
</li>
</ul>
</div>
</div>
<a id="ADFNS222"></a><a id="ADFNS1136"></a>
<div class="sect3"><!-- infolevel="all" infotype="General" --><a name="GUID-4A5C4CB2-A510-4637-90C6-22010B6AA0D3" id="GUID-4A5C4CB2-A510-4637-90C6-22010B6AA0D3"></a><h3 id="SQORA-GUID-4A5C4CB2-A510-4637-90C6-22010B6AA0D3" class="sect3">構成タスク</h3>
<div><div class="section"><p class="subhead1">トピック:</p></div>
<!-- class="section" -->
<div class="section"><ul style="list-style-type: disc;"><li><p><a href="#GUID-EA75770C-FAB2-4F98-BCF6-045A47A79A1E">Oracle Net Servicesの構成</a></p>
</li>
<li><p><a href="#GUID-2F0D82DF-2516-497F-9BD5-FC0CA9793D27">データソースの構成</a></p>
</li>
<li><p><a href="#GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A">「Oracle ODBCドライバ構成」ダイアログ・ボックス</a></p>
</li>
</ul>
</div>
<!-- class="section" -->
</div>
</div>
<a id="ADFNS1137"></a>
<div class="sect4"><!-- infolevel="all" infotype="General" --><a name="GUID-EA75770C-FAB2-4F98-BCF6-045A47A79A1E" id="GUID-EA75770C-FAB2-4F98-BCF6-045A47A79A1E"></a><h4 id="SQORA-GUID-EA75770C-FAB2-4F98-BCF6-045A47A79A1E" class="sect4">Oracle Net Servicesの構成</h4>
<div><div class="section"><p><a href="#GUID-2F0D82DF-2516-497F-9BD5-FC0CA9793D27">データソースを構成する</a>前に、ネットワーク・データベース・サービスを構成して各Transparent Network Substrate (TNS)サービス名のエントリを構成する必要があります。これを行うには、Oracle Net Configuration Assistant (NETCA).を使用します </p>
<p>NETCAを使用してtnsnames.oraファイルに各TNSサービス名のエントリを作成できます。Oracle Net Servicesのインストール時に、NETCAもインストールされます。</p>
</div>
<!-- class="section" -->
</div>
</div>
<a id="ADFNS1139"></a><a id="ADFNS1140"></a><a id="ADFNS1141"></a><a id="ADFNS1142"></a><a id="ADFNS1138"></a>
<div class="sect4"><!-- infolevel="all" infotype="General" --><a name="GUID-2F0D82DF-2516-497F-9BD5-FC0CA9793D27" id="GUID-2F0D82DF-2516-497F-9BD5-FC0CA9793D27"></a><h4 id="SQORA-GUID-2F0D82DF-2516-497F-9BD5-FC0CA9793D27" class="sect4">データソースの構成</h4>
<div><div class="section"><div align="center"><div class="inftblnote" id="GUID-2F0D82DF-2516-497F-9BD5-FC0CA9793D27__GUID-7DCDC120-20BF-47DA-A6F6-EA7D655BF5B3"><a id="GUID-7DCDC120-20BF-47DA-A6F6-EA7D655BF5B3" name="GUID-7DCDC120-20BF-47DA-A6F6-EA7D655BF5B3"></a><br /><table cellpadding="3" cellspacing="0" class="Note oac_no_warn" summary=""><tbody><tr><td><p class="notep1">注意:</p><p>次の構成手順はWindowsユーザー用です。Unixユーザーは、<code class="codeph">odbc_update_ini.sh</code>ファイルを使用してDSNを作成する必要があります。</p>
</td></tr></tbody></table><br /></div></div>
<p>Oracle ODBC Driverをインストールして<a href="#GUID-EA75770C-FAB2-4F98-BCF6-045A47A79A1E">Oracle Net Servicesを構成</a>した後、Oracle ODBC Driverを使用する前に、データソースを構成する必要があります。</p>
<p>アプリケーションとデータソース間で通信を行うには、構成情報が設定されている必要があります。Oracle ODBC Driverは、この構成情報からアクセス対象の情報を取得します。</p>
<p>データソースは、アクセス対象のデータと、それに対応付けられたオペレーティング・システム、データベース管理システムおよびデータベース管理システムにアクセスするためのネットワーク・プラットフォームで構成されます。Oracle ODBC Driverが発行する要求のデータソースはOracleデータベースであり、このデータソースはOracle Net Servicesによるトランスポートをサポートしています。</p>
</div>
<!-- class="section" -->
<div class="section"><p class="subhead1">Oracleデータソースを構成または追加するには</p></div>
<!-- class="section" -->
<div class="section"><p>Oracle ODBC Driverをインストールしたら、ODBCデータソース管理者を使用して、各OracleデータベースにOracleデータソースを構成または追加します。Oracle ODBC Driverは、データソースを追加する際にユーザーが入力する情報を使用してデータにアクセスします。次の手順を実行します。 </p>
<ol><li><p>「スタート」メニューから「プログラム」→「管理ツール」→「データ ソース (ODBC)」を選択します。インストールされているドライバのリストが表示されます。</p>
</li>
<li><p>新規データ ソースの作成ウィンドウで<span class="bold">「追加」</span>をクリックし、インストール済ドライバのリストで「Oracle ODBC Driver」を選択します。</p>
</li>
<li><p><span class="bold">「終了」</span>をクリックします。<a href="#GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A">「Oracle ODBCドライバ構成」ダイアログ・ボックス</a>が表示されます。DSNとTNSサービス名は必ず入力する必要があります。このダイアログ・ボックスでその他の必要な情報を入力することも、フィールドを空白のままにして、アプリケーションを実行するときに情報を指定することもできます。</p>
</li>
<li><p>データを入力したら、<span class="bold">「OK」</span>をクリックするか<span class="bold">[Enter]</span>を押します。</p>
</li>
</ol>
<p>データソースはいつでも変更または削除できます。次の項では、データソースの追加、変更または削除方法を説明します。</p>
</div>
<!-- class="section" -->
<div class="section"><p class="subhead1">Oracleデータソースを変更するには</p></div>
<!-- class="section" -->
<div class="section"><ol><li><p>「スタート」メニューから<span class="bold">「プログラム」→「管理ツール」→「データ ソース(ODBC)」</span>を選択します。</p>
</li>
<li><p>「ODBC データ ソース アドミニストレータ」ダイアログ・ボックスで、データソースのリストからデータソースを選択し、<span class="bold">「構成」</span>をクリックします。「Oracle ODBCドライバ構成」ダイアログ・ボックスが表示されます。</p>
</li>
<li><p><a href="#GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A">「Oracle ODBCドライバ構成」ダイアログ・ボックス</a>で、必要に応じてオプション値を変更し、<span class="bold">「OK」</span>をクリックします。</p>
</li>
</ol>
</div>
<!-- class="section" -->
<div class="section"><p class="subhead1">Oracleデータソースを削除するには</p></div>
<!-- class="section" -->
<ol><li><span>「スタート」メニューから<span class="bold">「プログラム」→「管理ツール」→「データ ソース(ODBC)」</span>を選択します。</span></li>
<li><span>「ODBC データ ソース アドミニストレータ」ダイアログ・ボックスで、データソースのリストから削除するデータソースを選択します。</span></li>
<li><span><span class="bold">「削除」</span>、<span class="bold">「はい」</span>の順にクリックして、削除を確定します。</span></li>
</ol>
</div>
</div>
<a id="ADFNS1144"></a><a id="ADFNS1145"></a><a id="ADFNS1146"></a><a id="ADFNS1147"></a><a id="ADFNS1148"></a><a id="ADFNS1149"></a><a id="ADFNS1150"></a><a id="ADFNS1151"></a><a id="ADFNS1152"></a><a id="ADFNS1143"></a>
<div class="sect4"><!-- infolevel="all" infotype="General" --><a name="GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A" id="GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A"></a><h4 id="SQORA-GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A" class="sect4">「Oracle ODBCドライバ構成」ダイアログ・ボックス</h4>
<div><div class="section"><div align="center"><div class="inftblnote" id="GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A__GUID-55332826-FFB9-43CF-86C7-FC688F5C170E"><a id="GUID-55332826-FFB9-43CF-86C7-FC688F5C170E" name="GUID-55332826-FFB9-43CF-86C7-FC688F5C170E"></a><br /><table cellpadding="3" cellspacing="0" class="Note oac_no_warn" summary=""><tbody><tr><td><p class="notep1">注意:</p><p>「Oracle ODBCドライバ構成」ダイアログ・ボックスを使用できるのは、Microsoft Windowsユーザーのみです。</p>
</td></tr></tbody></table><br /></div></div>
<p>次のスクリーンショットは「Oracle ODBCドライバ構成」ダイアログ・ボックスの例を示したものです。</p>
<div class="figure" id="GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A__BABHIHGI"><a id="BABHIHGI" name="BABHIHGI"></a><p class="titleinfigure">図: 「Oracle ODBCドライバ構成」ダイアログ・ボックス</p><img alt="図の説明が続きます" longdesc="img_text/setup_app.htm" src="img/setup_app.gif" title="図の説明が続きます" /><br /><a href="img_text/setup_app.htm">「図: 「Oracle ODBCドライバ構成」ダイアログ・ボックス」の説明</a></div>
<!-- class="figure" -->
<p>次のリストは、前図に示した「Oracle ODBCドライバ構成」ダイアログ・ボックスにあるメイン設定オプションおよびフィールドの説明です。ダイアログ・ボックスの下半分にあるタブは次以降のトピックで説明します。</p>
</div>
<!-- class="section" -->
<div class="section"><ul style="list-style-type: disc;"><li><p><span class="bold">データソース名 (DSN)</span> - ODBCでデータソースを識別する名前。たとえば、「odbc-pc」です。DSNを入力してください。</p>
</li>
<li><p><span class="bold">説明</span> - データソースに含まれているデータについての説明やコメント。たとえば、「全従業員の入社日、給与履歴、現行評価」などとします。「説明」フィールドはオプションです。</p>
</li>
<li><p><span class="bold">TNSサービス名</span> - ODBCドライバがデータを取得するOracleデータベースの位置。これは、<a href="#GUID-EA75770C-FAB2-4F98-BCF6-045A47A79A1E">Oracle Net Servicesを構成</a>したときに、Oracle Net Configuration Assistant (NETCA).を使用して入力したものと同じ名前です詳細は、NETCAのドキュメントと、<a href="unresolved-ref"></a>を参照してください。TNSサービス名は、使用可能なTNS名のプルダウン・リストから選択できます。たとえば、「ODBC-PC」を選択します。TNSサービス名を入力する必要があります。</p>
</li>
<li><p><span class="bold">ユーザーID</span> - データにアクセスするために使用するサーバー上のアカウントのユーザー名です。たとえば、「scott」です。「ユーザーID」フィールドはオプションです。</p>
</li>
</ul>
<p>DSNとTNSサービス名は必ず入力する必要があります。このダイアログ・ボックスでその他の情報を入力することも、フィールドを空白のままにして、アプリケーションを実行するときに情報を指定することもできます。</p>
<p>前述のメイン設定オプションの他に、「接続テスト」ボタンがあります。このボタンは、DSN名定義で指定されたデータベースに接続することによってODBC環境が適切に構成されているかを確認します。「接続テスト」ボタンを押し、ユーザー名およびパスワードを入力してください。</p>
<p>「Oracle ODBCドライバ構成」ダイアログ・ボックスの下半分にあるオプション・タブの説明は、次のリンクのいずれかをクリックします。</p>
<p><a href="#GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A"></a></p>
<p><a href="#GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A"></a></p>
<p><a href="#GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A"></a></p>
<p><a href="#GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A"></a></p>
</div>
<!-- class="section" -->
<div class="section" id="GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A__BABEJFGH"><a id="BABEJFGH" name="BABEJFGH"></a><p class="subhead1">アプリケーション・オプション</p></div>
<!-- class="section" -->
<div class="section"><p>次のスクリーンショットは、「Oracle ODBCドライバ構成」ダイアログ・ボックスにある「アプリケーション」タブの例を示したものです。</p>
<div class="figure" id="GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A__BABIDJBI"><a id="BABIDJBI" name="BABIDJBI"></a><p class="titleinfigure">図: 「Oracle ODBCドライバ構成」ダイアログ・ボックスの「アプリケーション」オプション・タブ</p><img alt="図の説明が続きます" longdesc="img_text/setup_app.htm" src="img/setup_app.gif" title="図の説明が続きます" /><br /><a href="img_text/setup_app.htm">「図: 「Oracle ODBCドライバ構成」ダイアログ・ボックスの「アプリケーション」オプション・タブ」の説明</a></div>
<!-- class="figure" -->
<p>次のリストは、前図で示した「アプリケーション」タブにあるフィールドの説明です。</p>
<ul style="list-style-type: disc;"><li><p><span class="bold">結果セットを有効化</span> - Oracle結果セットの処理を有効にします。結果セットがアプリケーションに必要ない場合、結果セットのサポートを無効にできます。パッケージからの結果セットを含んでいないプロシージャ・コールは、少々パフォーマンスが低下します。デフォルトでは、結果セットは有効です。</p>
</li>
<li><p><span class="bold">問合せタイムアウトを有効化</span> - SQL問合せで、タイムアウトを有効にします。デフォルトでは、Oracle ODBC DriverはSQLSetStmtAttr関数用に<code class="codeph">SQL_ATTR_QUERY_TIMEOUT</code>属性をサポートします。このボックスが選択されていない場合、Oracle ODBC Driverは、「不可」メッセージを返します。デフォルトでは、問合せタイムアウトは有効です。</p>
</li>
<li><p><span class="bold">読取専用接続</span> - 読取り専用アクセスを指定するには、このボックスを選択します。デフォルトは、書込み可能な接続です。</p>
</li>
<li><p><span class="bold">カーソル・クローズを有効化</span> - カーソル・クローズを有効にします。デフォルトでは、カーソル・クローズは無効(フィールドが空)になっています。これは、不必要なパフォーマンス低下の原因となるためこの動作が望ましくない場合に、カーソルのクローズをコールしてもOCIカーソルのクローズが強制されないことを意味します。カーソルのクローズをコールしたときにOCIカーソルを強制的にクローズする場合は、カーソル・クローズを有効にします。</p>
</li>
</ul>
<div align="center"><div class="inftblnote" id="GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A__GUID-041D8A19-2FB5-407F-8B69-1D33E87CB7C9"><a id="GUID-041D8A19-2FB5-407F-8B69-1D33E87CB7C9" name="GUID-041D8A19-2FB5-407F-8B69-1D33E87CB7C9"></a><br /><table cellpadding="3" cellspacing="0" class="Note oac_no_warn" summary=""><tbody><tr><td><p class="notep1">注意:</p><p>カーソルがクローズされるたびに、パフォーマンスに影響があります。</p>
</td></tr></tbody></table><br /></div></div>
<ul style="list-style-type: disc;"><li><p><span class="bold">スレッド・セーフティを有効化</span> - データソースについてスレッド・セーフティを無効にすることもできます。スレッド・セーフティが不要な場合は、このオプションを指定しなければスレッド・セーフティのオーバーヘッドをなくすことができます。デフォルトではスレッド・セーフティは有効です。</p>
</li>
<li><p><span class="bold">バッチ自動コミット・モード</span> - デフォルトでは、すべての文が成功した場合、コミットが実行されます。</p>
</li>
<li><p><span class="bold">数値の設定</span> - 文字列としてバインドされた数値データの受け渡しで、小数点文字や3桁セパレータを決定する数値設定を指定します。このオプションでは、Oracle NLSの設定(デフォルトの設定)、Microsoftのデフォルトの地域設定(Oracle OLE DBドライバの動作と合わせ相互運用性を向上)、US数値設定(英語環境以外でMS AccessまたはDAO (Database Access Object)を使用する際に必要)の選択ができます。</p>
</li>
</ul>
<div align="center"><div class="inftblnotealso" id="GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A__THEMAINCONFIGURATIONSETUPOPTIONSARE-CB468604"><a id="THEMAINCONFIGURATIONSETUPOPTIONSARE-CB468604" name="THEMAINCONFIGURATIONSETUPOPTIONSARE-CB468604"></a><br /><table cellpadding="3" cellspacing="0" class="NoteAlso oac_no_warn" summary=""><tbody><tr><td><p class="notep1">関連項目:</p><p>メイン構成設定オプションは、<a href="#GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A">「「Oracle ODBCドライバ構成」ダイアログ・ボックス」</a>を参照してください</p>
</td></tr></tbody></table><br /></div></div>
</div>
<!-- class="section" -->
<div class="section" id="GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A__BABFJIJI"><a id="BABFJIJI" name="BABFJIJI"></a><p class="subhead1">Oracleオプション</p></div>
<!-- class="section" -->
<div class="section"><p>次のスクリーンショットは、「Oracle ODBCドライバ構成」ダイアログ・ボックスにあるOracleオプション・タブの例を示したものです。</p>
<div class="figure" id="GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A__BABGBICJ"><a id="BABGBICJ" name="BABGBICJ"></a><p class="titleinfigure">図: 「Oracle ODBCドライバ構成」ダイアログ・ボックスの「Oracle」オプション・タブ</p><img alt="図の説明が続きます" longdesc="img_text/setup_ora.htm" src="img/setup_ora.gif" title="図の説明が続きます" /><br /><a href="img_text/setup_ora.htm">「図: 「Oracle ODBCドライバ構成」ダイアログ・ボックスの「Oracle」オプション・タブ」の説明</a></div>
<!-- class="figure" -->
<p>次のリストは、前図で示した「Oracle」タブにあるフィールドの説明です。</p>
<ul style="list-style-type: disc;"><li><p><span class="bold">フェッチ・バッファ・サイズ</span> - 単一の問合せでアプリケーション・プログラムがリクエストする行数に関係なく、ODBCドライバがOracleデータベースから一度にプリフェッチするデータの行数を決定するために使用されるメモリー量。ただし、プリフェッチされる行数は、単一の問合せで指定された列の幅と数に依存します。通常一度に20行未満をフェッチするアプリケーションでは、低速なネットワーク接続上で動作する場合や非常に負荷の高いサーバーにアクセスする場合には特に、レスポンス時間が向上します。フェッチ・バッファ・サイズを大きく設定しすぎると、レスポンス時間が悪化したり、メモリーを大量に消費したりすることがあります。</p>
</li>
</ul>
<div align="center"><div class="inftblnote" id="GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A__GUID-D82C1000-14A1-4D48-816F-9753DD792BD8"><a id="GUID-D82C1000-14A1-4D48-816F-9753DD792BD8" name="GUID-D82C1000-14A1-4D48-816F-9753DD792BD8"></a><br /><table cellpadding="3" cellspacing="0" class="Note oac_no_warn" summary=""><tbody><tr><td><p class="notep1">注意:</p><p><code class="codeph">LONG</code>およびLOBデータ型がある場合、ODBCドライバのプリフェッチ行数は、フェッチ・バッファ・サイズに依存しません。<code class="codeph">LONG</code>およびLOBデータ型では、パフォーマンスの改善が見込めず、過度のメモリー消費を引き起こす可能性があります。ODBCドライバは、<code class="codeph">LONG</code>およびLOBデータ型が含まれる場合、フェッチ・バッファ・サイズを無視し、プリフェッチ行数を使用します。</p>
</td></tr></tbody></table><br /></div></div>
<ul style="list-style-type: disc;"><li><p><span class="bold">LOBを有効化</span> - Oracle LOBの書込みを可能にします。アプリケーションにOracle LOBの書込みが不要であれば、LOBのサポートは無効にできます。LOBを有効にすると、INSERT文とUPDATE文の処理時にわずかながらパフォーマンスが低下します。LOBの書込みはデフォルトで有効ですが、LOBデータ型をサポートしないOracleデータベースでは無効になります。</p>
</li>
<li><p><span class="bold">ステートメントのキャッシングを有効化</span> - 文キャッシュ機能を有効にします。これにより、ユーザーが問合せおよび関連パラメータの同じテキストを複数回解析する必要がある場合に、問合せの解析パフォーマンスが向上します。デフォルトでは無効になります。</p>
</li>
<li><p><span class="bold">キャッシュバッファサイズ</span> - 文のキャッシュには、サービス・コンテキスト(<code class="codeph">OCI_ATTR_STMTCACHESIZE</code>)の属性を使用して変更可能な最大サイズ(文の数)があります。デフォルトのキャッシュ・バッファ・サイズは20で、文キャッシングのオプションが有効化されている場合にのみ使用されます。キャッシュ・バッファ・サイズを0に設定すると、文のキャッシング機能は無効になります。</p>
</li>
<li><p><span class="bold">最大トークン・サイズ</span> - トークン・サイズを4 KB (4096バイト)から開始する最も近い1 KB (1024バイト)の倍数に設定します。デフォルト・サイズは8 KB (8192バイト)です。設定できる最大値は128 KB (131068バイト)です。</p>
</li>
<li><p><span class="bold">ORAエラーを変換</span> - SQL翻訳フレームワーク機能を使用している移行済のサード・パーティODBCアプリケーションでは、サーバーから返されるエラーがネイティブ・データベース形式を取ると予想されます。このオプションを有効にすると、SQL翻訳プロファイルに登録されているエラー翻訳に基づいたネイティブ・エラーを受け取ることができます。</p>
</li>
<li><p><span class="bold">空の文字列を変換</span> - Oracle Databaseに移行されたサード・パーティのODBCアプリケーションでは、空の文字列データを処理する必要があります(Oracle Databaseでは表の列にある空の文字列データが処理されません)。このオプションを有効にすると、アプリケーションで空の文字列データの挿入または取得ができるようになります。</p>
<div align="center"><div class="inftblnote" id="GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A__GUID-2E8A70C1-01DE-451E-8AEB-AD977CA64FA2"><a id="GUID-2E8A70C1-01DE-451E-8AEB-AD977CA64FA2" name="GUID-2E8A70C1-01DE-451E-8AEB-AD977CA64FA2"></a><br /><table cellpadding="3" cellspacing="0" class="Note oac_no_warn" summary=""><tbody><tr><td><p class="notep1">注意:</p><p>この機能は、Oracle Database 12<span class="italic">c</span>リリース1(12.1.0.1)に実装されていません。</p>
</td></tr></tbody></table><br /></div></div>
</li>
</ul>
<p>「Oracle」タブの「フェイルオーバー」領域には次のフィールドがあります。</p>
<ul style="list-style-type: disc;"><li><p><span class="bold">フェイルオーバーを有効化</span> - Oracle Fail SafeとOracle Parallel Serverのフェイルオーバーの再試行を有効にします。このオプションは、Oracle Fail SafeとOracle Parallel Serverのフェイルオーバー機能に対する拡張です。このオプションで追加フェイルオーバー再試行が構成可能になります。デフォルトは有効です。</p>
</li>
<li><p><span class="bold">再試行</span> - 接続のフェイルオーバーを試みる回数。デフォルトは10回です。</p>
</li>
<li><p><span class="bold">遅延</span> - フェイルオーバーを試みる間隔の秒数。デフォルトは10秒です。</p>
</li>
</ul>
<div align="center"><div class="inftblnote" id="GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A__GUID-B3AF1633-C9C5-4B1E-BDCA-84B42097D626"><a id="GUID-B3AF1633-C9C5-4B1E-BDCA-84B42097D626" name="GUID-B3AF1633-C9C5-4B1E-BDCA-84B42097D626"></a><br /><table cellpadding="3" cellspacing="0" class="Note oac_no_warn" summary=""><tbody><tr><td><p class="notep1">注意:</p><p>Oracle Fail SafeとOracle Parallel Serverの設定や使用方法については、それぞれの製品のドキュメントを参照してください。</p>
</td></tr></tbody></table><br /></div></div>
<div align="center"><div class="inftblnotealso" id="GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A__ORACLEODBCDRIVERCONFIGURATIONDIALOG-CB46A272"><a id="ORACLEODBCDRIVERCONFIGURATIONDIALOG-CB46A272" name="ORACLEODBCDRIVERCONFIGURATIONDIALOG-CB46A272"></a><br /><table cellpadding="3" cellspacing="0" class="NoteAlso oac_no_warn" summary=""><tbody><tr><td><p class="notep1">関連項目:</p><p>メイン構成設定オプションは、<a href="#GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A">「「Oracle ODBCドライバ構成」ダイアログ・ボックス」</a>を参照してください</p>
</td></tr></tbody></table><br /></div></div>
</div>
<!-- class="section" -->
<div class="section" id="GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A__BABIFAAB"><a id="BABIFAAB" name="BABIFAAB"></a><p class="subhead1">Workaroundsオプション</p></div>
<!-- class="section" -->
<div class="section"><p>次のスクリーンショットは、「Oracle ODBCドライバ構成」ダイアログ・ボックスにあるWorkaroundsオプション・タブの例を示したものです。</p>
<div class="figure" id="GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A__BABIGDJC"><a id="BABIGDJC" name="BABIGDJC"></a><p class="titleinfigure">図: 「Oracle ODBCドライバ構成」ダイアログ・ボックスの「Workarounds」オプション・タブ</p><img alt="図の説明が続きます" longdesc="img_text/setup_work.htm" src="img/setup_work.gif" title="図の説明が続きます" /><br /><a href="img_text/setup_work.htm">「図: 「Oracle ODBCドライバ構成」ダイアログ・ボックスの「Workarounds」オプション・タブ」の説明</a></div>
<!-- class="figure" -->
<p>次のリストは、前図で示した「Workarounds」タブにあるフィールドの説明です。</p>
<ul style="list-style-type: disc;"><li><p><span class="bold">TIMESTAMPをDATEとしてバインド</span> - このボックスを選択すると、Oracle ODBC Driverにより、<code class="codeph">SQL_TIMESTAMP</code>パラメータがOracleの<code class="codeph">TIMESTAMP</code>型でなく<code class="codeph">DATE</code>型で強制的にバインドされます(デフォルト)。</p>
</li>
<li><p><span class="bold">SQL_WCHAR強制サポート</span> - このボックスを選択すると、SQLDescribeCol、SQLColumnsおよびSQLProcedureColumnsにより、<code class="codeph">SQL_CHAR</code>列には<code class="codeph">SQL_WCHAR</code>のデータ型、<code class="codeph">SQL_VARCHAR</code>列には<code class="codeph">SQL_WVARCHAR</code>のデータ型、および<code class="codeph">SQL_LONGVARCHAR</code>列には<code class="codeph">SQL_WLONGVARCHAR</code>のデータ型がそれぞれ無条件で戻されるようになります。この機能により、これらのODBCコールの結果に依存するアプリケーション(たとえば、ADOアプリケーション)でのUnicodeのサポートが可能になります。デフォルトでは、このサポートは無効になっています。</p>
</li>
<li><p><span class="bold">MTS無効</span> - このボックスの選択を解除すると、Microsoft Transaction Server (MTS)サポートが有効になります。MTSのサポートは、デフォルトで無効になっています。</p>
</li>
<li><p><span class="bold">METADATA IDデフォルトにSQL_TRUEをセット</span> - このボックスを選択すると、<code class="codeph">SQL_ATTR_METADATA_ID</code>接続と接続時の文属性のデフォルト値が<code class="codeph">SQL_TRUE</code>に変更されます。通常では<code class="codeph">SQL_ATTR_METADATA_ID</code>は<code class="codeph">SQL_FALSE</code>がデフォルトです。接続後に明示的に属性値を変更するアプリケーションのODBCコールが、このオプションにより影響を受けることはなく、関数は問題なく終了します。デフォルトでは、このオプションは無効です。</p>
</li>
<li><p><span class="bold">LONG列データのサイズをプリフェッチ</span> - <code class="codeph">LONG </code>または<code class="codeph">LONG RAW</code>データをプリフェッチしてODBCアプリケーションのパフォーマンスを向上させるには、この値を設定します。この機能強化により、ユーザーが設定したプリフェッチ・サイズに応じてOracle ODBC Driverのパフォーマンスが最大10倍向上します。デフォルト値は0 (ゼロ)です。設定できる最大値は64KB (65536バイト)です。</p>
<p>プリフェッチ・サイズの値が65536より大きい値に設定されていても、フェッチされるデータは65536バイトのみです。データベースに65536バイトより大きい<code class="codeph">LONG</code>または<code class="codeph">LONG RAW</code>データが含まれる場合、プリフェッチ・サイズを単一行フェッチが発生して完全な<code class="codeph">LONG</code>データをフェッチする0(デフォルト値)に設定します。ポーリング以外のモードでプリフェッチ・サイズより少ないバッファ・サイズを渡すと、データベースの<code class="codeph">LONG</code>データ・サイズがバッファ・サイズより大きい場合には、データの切捨てエラーが発生します。</p>
</li>
<li><p><span class="bold">SQLDescribeParamを無効化</span> - <code class="codeph">SQLDescribeParam</code>関数が有効な場合、すべてのパラメータに対して<code class="codeph">SQL_VARCHAR</code>データ型が戻されます。SQL_WCHAR強制サポート関数も有効な場合は、すべてのパラメータに対して<code class="codeph">SQL_WVARCHAR</code>データ型が戻されます。デフォルトでは、この関数は有効です。</p>
</li>
<li><p><span class="bold">NUMBERをFLOATとしてバインド</span> - このボックスを選択すると、Oracle ODBC Driverで、<code class="codeph">FLOAT</code>データを含む<code class="codeph">NUMBER</code>列がBinary Float (デフォルト)ではなくFloatとしてバインドされます。</p>
</li>
<li><p><span class="bold">RULEヒントを無効化</span> - このボックスの選択を解除すると、カタログ問合せで指定されている<code class="codeph">RULEヒント</code>が有効になります。デフォルトでは、<code class="codeph">RULEヒント</code>のオプションは無効です。</p>
</li>
<li><p><span class="bold">OCIDescribeAnyを使用</span> - このボックスを選択すると、アプリケーションが<code class="codeph">REF CURSORS</code>を戻す小さなパッケージ・プロシージャを頻繁にコールする場合にドライバに<code class="codeph">OCIDescribeAny()</code>の使用を強制することで、パフォーマンスが向上します。</p>
</li>
</ul>
<div align="center"><div class="inftblnotealso" id="GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A__FORMOREINFORMATIONSEEIMPLEMENTATION-CB46C078"><a id="FORMOREINFORMATIONSEEIMPLEMENTATION-CB46C078" name="FORMOREINFORMATIONSEEIMPLEMENTATION-CB46C078"></a><br /><table cellpadding="3" cellspacing="0" class="NoteAlso oac_no_warn" summary=""><tbody><tr><td><p class="notep1">関連項目:</p><ul style="list-style-type: disc;"><li><p><span class="bold">DATEおよびTIMESTAMP</span>の詳細は、<a href="#GUID-5D453F03-059F-469E-902C-82AB3695F40B">「データ型の実装」</a>を参照してください</p>
</li>
<li><p><code class="codeph">SQL_ATTR_METADATA_ID</code>属性の詳細は、<a href="#GUID-37A82452-DE02-4E07-9071-520549D23552">「ODBC API関数の実装」</a>を参照してください</p>
</li>
<li><p>メイン構成設定オプションは、<a href="#GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A">「「Oracle ODBCドライバ構成」ダイアログ・ボックス」</a>を参照してください</p>
</li>
</ul>
</td></tr></tbody></table><br /></div></div>
</div>
<!-- class="section" -->
<div class="section" id="GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A__BABDIDEF"><a id="BABDIDEF" name="BABDIDEF"></a><p class="subhead1">SQL Server移行オプション</p></div>
<!-- class="section" -->
<div class="section"><p>次のスクリーンショットは、「Oracle ODBCドライバ構成」ダイアログ・ボックスにあるSQL Server移行オプション・タブの例を示したものです。</p>
<div class="figure" id="GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A__BABIIBJE"><a id="BABIIBJE" name="BABIIBJE"></a><p class="titleinfigure">図: 「Oracle ODBCドライバ構成」ダイアログ・ボックスのSQL Server移行オプション・タブ</p><img alt="図の説明が続きます" longdesc="img_text/setup_ssmig.htm" src="img/setup_ssmig.gif" title="図の説明が続きます" /><br /><a href="img_text/setup_ssmig.htm">「図: 「Oracle ODBCドライバ構成」ダイアログ・ボックスのSQL Server移行オプション・タブ」の説明</a></div>
<!-- class="figure" -->
<p>前図のSQLサーバー移行オプション・タブのフィールドは次のとおりです。</p>
<ul style="list-style-type: disc;"><li><p><span class="bold">Enable EXEC Syntax</span> - SQL Server EXEC構文のサポートを有効にします。Oracleデータベース・サーバーによって処理される前に、EXEC文で指定されるサブプログラム・コールは、対応するOracleサブプログラム・コールに変換されます。デフォルトではこのオプションは無効になっています。</p>
</li>
<li><p><span class="bold">スキーマ</span> - 変換されたOracleサブプログラムは、ユーザーのデフォルト・スキーマに定義されます。しかし、同じSQL Serverデータベースからのすべてのサブプログラムを、データベース名をスキーマ名としてOracleスキーマに移行する場合、このフィールドは「データベース」に設定します。同じSQL Serverユーザーに所有されていたすべてのサブプログラムを同じOracleスキーマに定義する場合、このフィールドは「オーナー」に設定します。デフォルトでは、このフィールドは空欄になっています。</p>
</li>
</ul>
<div align="center"><div class="inftblnotealso" id="GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A__ORACLEODBCDRIVERCONFIGURATIONDIALOG-CB471B11"><a id="ORACLEODBCDRIVERCONFIGURATIONDIALOG-CB471B11" name="ORACLEODBCDRIVERCONFIGURATIONDIALOG-CB471B11"></a><br /><table cellpadding="3" cellspacing="0" class="NoteAlso oac_no_warn" summary=""><tbody><tr><td><p class="notep1">関連項目:</p><p>メイン構成設定オプションは、<a href="#GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A">「「Oracle ODBCドライバ構成」ダイアログ・ボックス」</a>を参照してください</p>
</td></tr></tbody></table><br /></div></div>
</div>
<!-- class="section" -->
</div>
</div>
<a id="ADFNS223"></a><a id="ADFNS1153"></a>
<div class="sect3"><!-- infolevel="all" infotype="General" --><a name="GUID-81BE6FBB-B0CA-4C0A-B708-9CADB5126A73" id="GUID-81BE6FBB-B0CA-4C0A-B708-9CADB5126A73"></a><h3 id="SQORA-GUID-81BE6FBB-B0CA-4C0A-B708-9CADB5126A73" class="sect3">oraodbc.iniファイルの変更</h3>
<div><div class="section"><p class="subhead1">トピック:</p></div>
<!-- class="section" -->
<div class="section"><ul style="list-style-type: disc;"><li><p><a href="#GUID-6F8AF384-EF77-4EBA-AD45-4F54FF1A6739">ロック・タイムアウトの短縮</a></p>
</li>
</ul>
</div>
<!-- class="section" -->
</div>
</div>
<a id="ADFNS1154"></a>
<div class="sect4"><!-- infolevel="all" infotype="General" --><a name="GUID-6F8AF384-EF77-4EBA-AD45-4F54FF1A6739" id="GUID-6F8AF384-EF77-4EBA-AD45-4F54FF1A6739"></a><h4 id="SQORA-GUID-6F8AF384-EF77-4EBA-AD45-4F54FF1A6739" class="sect4">ロック・タイムアウトの短縮</h4>
<div><div class="section"><p>Oracleサーバーは、トランザクション間のロック競合が解消されるまで無期限に待機します。Oracle ODBC Driverの<code class="codeph">oraodbc.ini</code>ファイルの<code class="codeph">LockTimeOut</code>エントリを設定することで、Oracleサーバーがロックの解消を待機する時間を制限できます。<code class="codeph">LockTimeOut</code>パラメータに入力する値は、Oracleサーバーがリクエストしたロックを取得できない場合にタイムアウトになるまでの秒数です。次の例では、Oracleサーバーは60秒後にタイムアウトになります。</p>
<pre class="oac_no_warn" dir="ltr">[Oracle ODBC Driver Common]
LockTimeOut=60
</pre>
</div>
<!-- class="section" -->
</div>
</div>
<a id="ADFNS352"></a><a id="ADFNS1155"></a>
<div class="sect3"><!-- infolevel="all" infotype="General" --><a name="GUID-F138E550-E14D-4417-9AE5-CC9EDE2DDE61" id="GUID-F138E550-E14D-4417-9AE5-CC9EDE2DDE61"></a><h3 id="SQORA-GUID-F138E550-E14D-4417-9AE5-CC9EDE2DDE61" class="sect3">データソースへの接続</h3>
<div><div class="section"><p class="subhead1">トピック:</p></div>
<!-- class="section" -->
<div class="section"><p><a href="#GUID-A9C50E35-4766-47A1-933F-D35DB27E7C46">Oracleデータソースへの接続</a></p>
</div>
<!-- class="section" -->
</div>
</div>
<a id="ADFNS1157"></a><a id="ADFNS1158"></a><a id="ADFNS1156"></a>
<div class="sect4"><!-- infolevel="all" infotype="General" --><a name="GUID-A9C50E35-4766-47A1-933F-D35DB27E7C46" id="GUID-A9C50E35-4766-47A1-933F-D35DB27E7C46"></a><h4 id="SQORA-GUID-A9C50E35-4766-47A1-933F-D35DB27E7C46" class="sect4">Oracleデータソースへの接続</h4>
<div><div class="section"><p>Oracle ODBC Driverでは、データソースに接続するために、使用するコンピュータにOCIクライアント・ソフトウェアがインストールされていて、対応するリスナーがOracleサーバーで実行されていることが必要です。Oracle Net Services for Windowsは、ダイナミック・リンク・ライブラリ(DLL)に基づくアプリケーションです。Oracle Net Servicesの詳細は、Oracle Net Servicesのマニュアルを参照してください。</p>
<p>接続処理の一部として、アプリケーションがユーザーに情報を要求することがあります。アプリケーションからOracleデータソースについての情報を要求された場合は、次の手順を実行します。</p>
</div>
<!-- class="section" -->
<ol><li><span>「TNSサービス名」ボックスで、TNSサービス名の名前を入力します。</span></li>
<li><span>「ユーザー名」ボックスに、Oracleデータベースにアクセスするために使用する名前を入力します。</span></li>
<li><span>「パスワード」ボックスに、Oracleデータベースにアクセスするために使用するパスワードを入力します。</span></li>
<li><span><span class="bold">「OK」</span>をクリックします。</span></li>
</ol>
<div class="section"><p>アプリケーションは、データソース内のデータにアクセスするためにはデータソースに接続する必要があります。データソースに接続するタイミングは、アプリケーションによって異なります。たとえば、アプリケーションがユーザーの要求時にのみデータソースに接続する場合もあれば、起動時に自動的に接続する場合もあります。アプリケーションがいつデータソースに接続するかは、そのアプリケーションのマニュアルを参照してください。</p>
<div class="p">追加情報にアクセスするには、次のリンクのいずれかをクリックします。<ul style="list-style-type: disc;"><li><p>すべてのユーザー:</p>
<ul style="list-style-type: disc;"><li><p><a href="#GUID-2F0D82DF-2516-497F-9BD5-FC0CA9793D27">データソースの構成</a></p>
</li>
</ul>
</li>
<li><p>プログラマ:</p>
<ul style="list-style-type: disc;"><li><p><a href="#GUID-F141C2E1-BA44-4399-B72A-3B1FBA2BC750">SQLDriverConnectの実装</a></p>
</li>
<li><p><a href="#GUID-F99DC4BD-4B46-4BAC-B9C1-A6306D0529DA">データソース構成オプション</a></p>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- class="section" -->
</div>
</div>
<a id="ADFNS353"></a><a id="ADFNS1159"></a>
<div class="sect3"><!-- infolevel="all" infotype="General" --><a name="GUID-4579145F-AD46-4B1D-AD2A-ACB8AFA962F1" id="GUID-4579145F-AD46-4B1D-AD2A-ACB8AFA962F1"></a><h3 id="SQORA-GUID-4579145F-AD46-4B1D-AD2A-ACB8AFA962F1" class="sect3">トラブルシューティング</h3>
<div><div class="section"><p class="subhead1">トピック:</p></div>
<!-- class="section" -->
<div class="section"><ul style="list-style-type: disc;"><li><p><a href="#GUID-5A5DE265-04FA-421E-8155-6F7B3353DAE8">Oracle ODBC Driverの最初の使用</a></p>
</li>
<li><p><a href="#GUID-5D050A5C-8043-4E11-A84E-780F9BDBDAC8">期限切れパスワード</a></p>
</li>
</ul>
</div>
<!-- class="section" -->
</div>
</div>
<a id="ADFNS1436"></a><a id="ADFNS1437"></a><a id="ADFNS1438"></a><a id="ADFNS1439"></a><a id="ADFNS1440"></a><a id="ADFNS1441"></a><a id="ADFNS1160"></a>
<div class="sect4"><!-- infolevel="all" infotype="General" --><a name="GUID-5A5DE265-04FA-421E-8155-6F7B3353DAE8" id="GUID-5A5DE265-04FA-421E-8155-6F7B3353DAE8"></a><h4 id="SQORA-GUID-5A5DE265-04FA-421E-8155-6F7B3353DAE8" class="sect4">Oracle ODBC Driverの最初の使用</h4>
<div></div>
</div>
<a id="ADFNS1162"></a><a id="ADFNS1161"></a>
<div class="sect4"><!-- infolevel="all" infotype="General" --><a name="GUID-5D050A5C-8043-4E11-A84E-780F9BDBDAC8" id="GUID-5D050A5C-8043-4E11-A84E-780F9BDBDAC8"></a><h4 id="SQORA-GUID-5D050A5C-8043-4E11-A84E-780F9BDBDAC8" class="sect4">期限切れパスワード</h4>
<div><div class="section"><p>この項には、期限切れパスワードに関する情報が含まれます。</p>
</div>
<!-- class="section" -->
<div class="section"><p class="subhead1">期限切れパスワードの動作</p></div>
<!-- class="section" -->
<div class="section"><p>データベースの接続時にパスワードが期限切れの場合、パスワードを変更するよう要求されます。正常にパスワードが変更されると、データベースに接続されます。ただし、<code class="codeph">SQL_DRIVER_NOPROMPT</code>パラメータ値を使用して<code class="codeph">SQLDriverConnect</code>コールでデータベースに接続すると、Oracle ODBC Driverはパスワードを変更するよう要求しません。かわりにエラーとなり、パスワードが期限切れであることを示すエラー番号およびメッセージを表示します。</p>
</div>
<!-- class="section" -->
</div>
</div>
<a id="ADFNS354"></a><a id="ADFNS1163"></a>
<div class="sect2"><!-- infolevel="all" infotype="General" --><a name="GUID-7B038D08-62E0-4D6A-890A-4211A647BDFB" id="GUID-7B038D08-62E0-4D6A-890A-4211A647BDFB"></a><h2 id="SQORA-GUID-7B038D08-62E0-4D6A-890A-4211A647BDFB" class="sect2">上級ユーザー</h2>
<div><div class="section"><p class="subhead1">トピック:</p></div>
<!-- class="section" -->
<ul style="list-style-type: disc;"><li><p><a href="#GUID-A464ED4A-6131-46AC-8EB6-3F697C2BAF3E">Oracle ODBC DriverのTNSサービス名の作成</a></p>
</li>
<li><p><a href="#GUID-78184852-E076-4574-9D79-2513301BFEF5">SQL文</a></p>
</li>
<li><p><a href="#GUID-082A92F3-FC80-4327-8D43-38BADD15A975">データ型</a></p>
</li>
<li><p><a href="#GUID-5D453F03-059F-469E-902C-82AB3695F40B">データ型の実装</a></p>
</li>
<li><p><a href="#GUID-3103A456-A749-4EB9-B0FA-D074C4EF483E">データ型の制限</a></p>
</li>
<li><p><a href="#GUID-60D6F0A0-D043-4CA2-A360-5604A9BF2B73">エラー・メッセージ</a></p>
</li>
</ul>
</div>
</div>
<a id="ADFNS1164"></a>
<div class="sect3"><!-- infolevel="all" infotype="General" --><a name="GUID-A464ED4A-6131-46AC-8EB6-3F697C2BAF3E" id="GUID-A464ED4A-6131-46AC-8EB6-3F697C2BAF3E"></a><h3 id="SQORA-GUID-A464ED4A-6131-46AC-8EB6-3F697C2BAF3E" class="sect3">Oracle ODBC DriverのTNSサービス名の作成</h3>
<div><div class="section"><p>Oracle Net Servicesを使用してOracle ODBC DriverのTNSサービス名を作成するには、Oracle Net Servicesと同時にインストールされるOracle Net Configuration Assistant (NETCA)を使用します。NETCAによって、Oracle ODBC DriverのTNSサービス名のエントリがtnsnames.oraファイルに作成されます。</p>
</div>
<!-- class="section" -->
</div>
</div>
<a id="ADFNS1166"></a><a id="ADFNS1167"></a><a id="ADFNS1165"></a>
<div class="sect3"><!-- infolevel="all" infotype="General" --><a name="GUID-78184852-E076-4574-9D79-2513301BFEF5" id="GUID-78184852-E076-4574-9D79-2513301BFEF5"></a><h3 id="SQORA-GUID-78184852-E076-4574-9D79-2513301BFEF5" class="sect3">SQL文</h3>
<div><div class="section"><p>Oracle ODBC DriverはSQL-92のエントリ・レベル仕様のスーパーセットであるSQL-99のコア仕様と広く互換性があります。Oracleの文法に加えて、ODBC仕様の付録Cで概要を説明しているベンダー固有のエスケープ・シーケンスもサポートしています。ODBCの設計に従って、Oracle ODBC Driverは固有のSQL構文をOracleデータベースに渡します。</p>
<div align="center"><div class="inftblnotealso" id="GUID-78184852-E076-4574-9D79-2513301BFEF5__NOTE-1212-CB476928"><a id="NOTE-1212-CB476928" name="NOTE-1212-CB476928"></a><br /><table cellpadding="3" cellspacing="0" class="NoteAlso oac_no_warn" summary=""><tbody><tr><td><p class="notep1">関連項目:</p><ul style="list-style-type: disc;"><li><p>上級ユーザーは、<a href="#GUID-082A92F3-FC80-4327-8D43-38BADD15A975">「データ型」</a>を参照してください</p>
</li>
<li><p><a href="#GUID-F6D578E0-CF3C-42CA-AD55-155E591DD74A">ODBC SQL構文の実装</a></p>
プログラマ</li>
</ul>
</td></tr></tbody></table><br /></div></div>
</div>
<!-- class="section" -->
</div>
</div>
<a id="ADFNS1169"></a><a id="ADFNS1170"></a><a id="ADFNS1168"></a>
<div class="sect3"><!-- infolevel="all" infotype="General" --><a name="GUID-082A92F3-FC80-4327-8D43-38BADD15A975" id="GUID-082A92F3-FC80-4327-8D43-38BADD15A975"></a><h3 id="SQORA-GUID-082A92F3-FC80-4327-8D43-38BADD15A975" class="sect3">データ型</h3>
<div><p>Oracleデータベースのデータ型はOracle ODBC DriverによってODBCのSQLデータ型にマップされます。</p>
<div align="center"><div class="inftblnote" id="GUID-082A92F3-FC80-4327-8D43-38BADD15A975__GUID-2DB7F359-1341-4103-BB65-5F2C82A3900C"><a id="GUID-2DB7F359-1341-4103-BB65-5F2C82A3900C" name="GUID-2DB7F359-1341-4103-BB65-5F2C82A3900C"></a><br /><table cellpadding="3" cellspacing="0" class="Note oac_no_warn" summary=""><tbody><tr><td><p class="notep1">注意:</p><p><span class="italic">Microsoft ODBC 3.52 Software Development Kit and Programmers Reference</span>のAppendix Dにあるすべての変換は、適切な情報型を指定した<code class="codeph">SQLGetInfo</code>のコールでリストされるODBC SQLデータ型についてサポートされています。</p>
</td></tr></tbody></table><br /></div></div>
<div align="center"><div class="inftblnotealso" id="GUID-082A92F3-FC80-4327-8D43-38BADD15A975__NOTE-123-CB47995D"><a id="NOTE-123-CB47995D" name="NOTE-123-CB47995D"></a><br /><table cellpadding="3" cellspacing="0" class="NoteAlso oac_no_warn" summary=""><tbody><tr><td><p class="notep1">関連項目:</p><ul style="list-style-type: disc;"><li><p>上級ユーザー向け:</p>
<ul style="list-style-type: disc;"><li><p><a href="#GUID-5D453F03-059F-469E-902C-82AB3695F40B">データ型の実装</a></p>
</li>
<li><p><a href="#GUID-3103A456-A749-4EB9-B0FA-D074C4EF483E">データ型の制限</a></p>
</li>
<li><p><a href="#GUID-78184852-E076-4574-9D79-2513301BFEF5">SQL文</a></p>
</li>
</ul>
</li>
<li><p>プログラマ:</p>
<ul style="list-style-type: disc;"><li><p><a href="#GUID-BAA07D62-A7F4-4A1B-B73F-86751A32EBDC">データ型の実装(プログラミング)</a></p>
</li>
</ul>
</li>
</ul>
</td></tr></tbody></table><br /></div></div>
<div class="section"><p></p>
</div>
<!-- class="section" -->
</div>
</div>
<a id="ADFNS355"></a><a id="ADFNS1172"></a><a id="ADFNS1173"></a><a id="ADFNS1174"></a><a id="ADFNS1171"></a>
<div class="sect3"><!-- infolevel="all" infotype="General" --><a name="GUID-5D453F03-059F-469E-902C-82AB3695F40B" id="GUID-5D453F03-059F-469E-902C-82AB3695F40B"></a><h3 id="SQORA-GUID-5D453F03-059F-469E-902C-82AB3695F40B" class="sect3">データ型の実装</h3>
<div><div class="section"><p class="subhead1">トピック:</p></div>
<!-- class="section" -->
<div class="section"><ul style="list-style-type: disc;"><li><p><a href="#GUID-5D453F03-059F-469E-902C-82AB3695F40B__BABDCGGG">DATEおよびTIMESTAMP</a></p>
</li>
<li><p><a href="#GUID-5D453F03-059F-469E-902C-82AB3695F40B__BABBCEHB">浮動小数点のデータ型</a></p>
</li>
</ul>
</div>
<!-- class="section" -->
<div class="section" id="GUID-5D453F03-059F-469E-902C-82AB3695F40B__BABDCGGG"><a id="BABDCGGG" name="BABDCGGG"></a><p class="subhead1">DATEおよびTIMESTAMP</p></div>
<!-- class="section" -->
<div class="section"><p>Oracleの<code class="codeph">DATE</code>データ型および<code class="codeph">TIMESTAMP</code>データ型のセマンティクスは、同じ名前を持つODBCデータ型に正確には対応していません。Oracleの<code class="codeph">DATE</code>データ型には日付情報および時間情報の両方が、<code class="codeph">SQL_DATE</code>データ型には日付情報のみが含まれます。またOracleの<code class="codeph">TIMESTAMP</code>データ型にも日付情報および時間情報が含まれますが、ここでは小数秒まで正確に表示されます。ODBCドライバでは、Oracleの<code class="codeph">DATE</code>および<code class="codeph">TIMESTAMP</code>列の両方のデータ型が<code class="codeph">SQL_TIMESTAMP</code>としてレポートされ、情報の紛失が回避されています。また、ODBCドライバにより、<code class="codeph">SQL_TIMESTAMP</code>パラメータがOracleの<code class="codeph">SQL_TIMESTAMP</code>値としてバインドされます。</p>
</div>
<!-- class="section" -->
<div class="section" id="GUID-5D453F03-059F-469E-902C-82AB3695F40B__BABBCEHB"><a id="BABBCEHB" name="BABBCEHB"></a><p class="subhead1">浮動小数点のデータ型</p></div>
<!-- class="section" -->
<div class="section"><p>リリース10.1以降のOracleサーバーに接続すると、ODBCドライバにより、Oracleの浮動小数点のデータ型である<code class="codeph">BINARY_FLOAT</code>および<code class="codeph">BINARY_DOUBLE</code>が、ODBCデータ型である<code class="codeph">SQL_REAL</code>および<code class="codeph">SQL_DOUBLE</code>にそれぞれマップされます。以前のリリースでは、<code class="codeph">SQL_REAL</code>および<code class="codeph">SQL_DOUBLE</code>がOracleの汎用数値データ型にマップされていました。</p>
<div align="center"><div class="inftblnotealso" id="GUID-5D453F03-059F-469E-902C-82AB3695F40B__DATEANDTIMESTAMPDATATYPESE-3457320E"><a id="DATEANDTIMESTAMPDATATYPESE-3457320E" name="DATEANDTIMESTAMPDATATYPESE-3457320E"></a><br /><table cellpadding="3" cellspacing="0" class="NoteAlso oac_no_warn" summary=""><tbody><tr><td><p class="notep1">関連項目:</p><p><a href="#GUID-F08F34BC-F987-4F07-ADD9-EFA4705BD423">DATEデータ型およびTIMESTAMPデータ型</a></p>
</td></tr></tbody></table><br /></div></div>
</div>
<!-- class="section" -->
</div>
</div>
<a id="ADFNS1176"></a><a id="ADFNS1175"></a>
<div class="sect3"><!-- infolevel="all" infotype="General" --><a name="GUID-3103A456-A749-4EB9-B0FA-D074C4EF483E" id="GUID-3103A456-A749-4EB9-B0FA-D074C4EF483E"></a><h3 id="SQORA-GUID-3103A456-A749-4EB9-B0FA-D074C4EF483E" class="sect3">データ型の制限</h3>
<div><p>Oracle ODBC DriverおよびOracleデータベースでは、データ型について制限があります。次の表に、これらの制限を示します。</p>
<div class="tblformal" id="GUID-3103A456-A749-4EB9-B0FA-D074C4EF483E__BABIJGDI">
<a id="BABIJGDI" name="BABIJGDI"></a><p class="titleintable">表: データ型のOracle ODBC DriverおよびOracleデータベースの制限</p>
<table border="1" cellpadding="4" cellspacing="0" class="Formal" frame="hsides" rules="rows" summary="この表では、Oracle ODBC DriverおよびOracleデータベースによってデータ型に課される制限を説明しています。" title="データ型のOracle ODBC DriverおよびOracleデータベースの制限" width="100%"><thead><tr align="left" valign="top"><th align="left" valign="bottom" width="31%" id="d4487e35">制限されるデータ型</th>
<th align="left" valign="bottom" width="69%" id="d4487e38">説明</th>
</tr>
</thead>
<tbody><tr align="left" valign="top"><td align="left" valign="top" width="31%" id="d4487e43" headers="d4487e35 "><p>リテラル</p>
</td>
<td align="left" valign="top" width="69%" headers="d4487e43 d4487e38 "><p>OracleデータベースではSQL文内のリテラルが4,000バイトに制限されます。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="31%" id="d4487e50" headers="d4487e35 "><p>SQL_LONGVARCHARおよびSQL_WLONGVARCHAR</p>
</td>
<td align="left" valign="top" width="69%" headers="d4487e50 d4487e38 "><p><code class="codeph">SQL_LONGVARCHAR</code>データ(<code class="codeph">LONG</code>型)のOracleでの制限は2,147,483,647バイトです。<code class="codeph">SQL_WLONGVARCHAR</code>データ(<code class="codeph">CLOB</code>型)のOracleでの制限は4GBです。クライアント・ワークステーションのメモリーが制限の要因になります。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="31%" id="d4487e69" headers="d4487e35 "><p>SQL_LONGVARCHARおよびSQL_LONGVARBINARY</p>
</td>
<td align="left" valign="top" width="69%" headers="d4487e69 d4487e38 "><p>Oracleデータベースでは1つの表ではLONGデータ列を1つしか使用できません。LONGデータ型には<code class="codeph">SQL_LONGVARCHAR</code>(<code class="codeph">LONG</code>)と<code class="codeph">SQL_LONGVARBINARY</code>(<code class="codeph">LONG RAW</code>)があります。かわりに<code class="codeph">CLOB</code>および<code class="codeph">BLOB</code>を使用することをお薦めします。1つの表で使用できる<code class="codeph">CLOB</code>および<code class="codeph">BLOB</code>列の数には、制限はありません。</p>
</td>
</tr>
</tbody>
</table>
</div>
<!-- class="inftblhruleinformal" -->
</div>
</div>
<a id="ADFNS1178"></a><a id="ADFNS1179"></a><a id="ADFNS1180"></a><a id="ADFNS1181"></a><a id="ADFNS1177"></a>
<div class="sect3"><!-- infolevel="all" infotype="General" --><a name="GUID-60D6F0A0-D043-4CA2-A360-5604A9BF2B73" id="GUID-60D6F0A0-D043-4CA2-A360-5604A9BF2B73"></a><h3 id="SQORA-GUID-60D6F0A0-D043-4CA2-A360-5604A9BF2B73" class="sect3">エラー・メッセージ</h3>
<div><p>エラーが発生すると、Oracle ODBC Driverは固有のエラー番号、<code class="codeph">SQLSTATE</code>(ODBCエラー・コード)およびエラー・メッセージを戻します。Oracle ODBC Driverが検出したエラーとOracleサーバーが戻したエラーの両方から、Oracle ODBC Driverがこの情報を導出します。</p>
<div class="section"><p class="subhead1">固有のエラー</p></div>
<!-- class="section" -->
<div class="section"><p>データソースで発生したエラーについては、Oracle ODBC DriverはOracleサーバーから戻された固有のエラーを戻します。Oracle ODBC Driverまたはドライバ・マネージャがエラーを検出した場合は、Oracle ODBC Driverは0 (ゼロ)という固有のエラーを戻します。</p>
</div>
<!-- class="section" -->
<div class="section"><p class="subhead1">SQLSTATE</p></div>
<!-- class="section" -->
<div class="section"><p>データソースで発生したエラーについては、Oracle ODBC Driverは戻された固有のエラーを適切な<code class="codeph">SQLSTATE</code>にマップします。Oracle ODBC Driverがエラーを検出した場合は、Oracle ODBC Driverが適切な<code class="codeph">SQLSTATE</code>を生成します。ドライバ・マネージャがエラーを検出した場合は、ドライバ・マネージャが適切な<code class="codeph">SQLSTATE</code>を生成します。</p>
</div>
<!-- class="section" -->
<div class="section"><p class="subhead1">エラー・メッセージ</p></div>
<!-- class="section" -->
<div class="section"><p>データソースで発生したエラーについては、Oracle ODBC DriverはOracleサーバーから戻されたメッセージに基づくエラー・メッセージを戻します。Oracle ODBC Driverまたはドライバ・マネージャで発生したエラーについては、Oracle ODBC Driverは<code class="codeph">SQLSTATE</code>に関連するテキストに基づくエラー・メッセージを戻します。</p>
<p>エラー・メッセージのフォーマットは次のとおりです。</p>
<pre class="oac_no_warn" dir="ltr">[vendor] [ODBC-component] [data-source] error-message
</pre>
<p>大カッコ([ ])内の接頭辞によってエラーのソースが識別されます。次の表に、Oracle ODBC Driverが戻すこれらの接頭辞の値を示します。エラーがデータソースで発生したときは、[vendor]および[ODBC-component]という接頭辞によって、ベンダーと、データソースからエラーを受け取るODBCコンポーネントの名前が識別されます。</p>
<div class="tblformal" id="GUID-60D6F0A0-D043-4CA2-A360-5604A9BF2B73__BABFICEJ">
<a id="BABFICEJ" name="BABFICEJ"></a><p class="titleintable">表: Oracle ODBC Driverが戻す接頭辞のエラー・メッセージ値</p>
<table border="1" cellpadding="4" cellspacing="0" class="Formal" frame="hsides" rules="rows" summary="この表は、考えられる3つのエラー・ソースに基づいてOracle ODBC Driverが戻すこれらの接頭辞の値を示しています。" title="Oracle ODBC Driverが戻す接頭辞のエラー・メッセージ値" width="100%"><thead><tr align="left" valign="top"><th align="left" valign="bottom" width="33%" id="d4689e78">エラー・ソース</th>
<th align="left" valign="bottom" width="27%" id="d4689e81">接頭辞</th>
<th align="left" valign="bottom" width="40%" id="d4689e84">値</th>
</tr>
</thead>
<tbody><tr align="left" valign="top"><td align="left" valign="top" width="33%" id="d4689e89" headers="d4689e78 "><p>ドライバ・マネージャ</p>
</td>
<td align="left" valign="top" width="27%" headers="d4689e89 d4689e81 "><p>[vendor][ODBC-component][data-source]</p>
</td>
<td align="left" valign="top" width="40%" headers="d4689e89 d4689e84 "><p>[Microsoft/unixODBC][ODBC Driver Manager]N/A</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="33%" id="d4689e99" headers="d4689e78 "><p>Oracle ODBC Driver</p>
</td>
<td align="left" valign="top" width="27%" headers="d4689e99 d4689e81 "><p>[vendor][ODBC-component][data-source]</p>
</td>
<td align="left" valign="top" width="40%" headers="d4689e99 d4689e84 "><p>[ORACLE][ODBC Driver]N/A</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="33%" id="d4689e109" headers="d4689e78 "><p>Oracleサーバー</p>
</td>
<td align="left" valign="top" width="27%" headers="d4689e109 d4689e81 "><p>[vendor][ODBC-component][data-source]</p>
</td>
<td align="left" valign="top" width="40%" headers="d4689e109 d4689e84 "><p>[ORACLE][ODBC Driver]N/A</p>
</td>
</tr>
</tbody>
</table>
</div>
<!-- class="inftblhruleinformal" -->
<p>たとえば、次に示すフォーマットのようにエラー・メッセージに[Ora]という接頭辞が含まれない場合、そのエラーはOracle ODBC Driverのエラーであり、自明であるために接頭辞が省略されています。</p>
<pre class="oac_no_warn" dir="ltr">[Oracle][ODBC]Error message text here
</pre>
<p>次に示すフォーマットのようにエラー・メッセージに[Ora]という接頭辞が含まれる場合、Oracle ODBC Driverのエラーではありません。</p>
<div align="center"><div class="inftblnote" id="GUID-60D6F0A0-D043-4CA2-A360-5604A9BF2B73__GUID-400B7109-FB87-44D7-8814-3E1055B29EA8"><a id="GUID-400B7109-FB87-44D7-8814-3E1055B29EA8" name="GUID-400B7109-FB87-44D7-8814-3E1055B29EA8"></a><br /><table cellpadding="3" cellspacing="0" class="Note oac_no_warn" summary=""><tbody><tr><td><p class="notep1">注意:</p><p>エラー・メッセージに接頭辞[Ora]が含まれていても、実際のエラーはいくつかのソースの1つで発生している可能性があります。</p>
</td></tr></tbody></table><br /></div></div>
<pre class="oac_no_warn" dir="ltr">[Oracle][ODBC][Ora]Error message text here
</pre>
<p>エラー・メッセージのテキストが次に示す接頭辞で始まる場合は、そのエラーについての詳しい情報がOracleサーバーのマニュアルに記載されています。</p>
<pre class="oac_no_warn" dir="ltr">ORA-
</pre>
<p>Oracle Net Servicesエラーおよびトレース・ロギングは、OCIソフトウェアがインストールされたWindowsシステムの<code><span class="codeinlineitalic">ORACLE_HOME</span></code><code class="codeph">\NETWORK</code>ディレクトリまたはUNIXシステムの<code><span class="codeinlineitalic">ORACLE_HOME</span></code><code class="codeph">/NETWORK</code>ディレクトリの下、具体的にはそれぞれlogディレクトリとtraceディレクトリにあります。データベース・ロギングは、Oracleサーバー・ソフトウェアがインストールされたWindowsシステムの<code><span class="codeinlineitalic">ORACLE_HOME</span></code><code class="codeph">\RDBMS</code>ディレクトリまたはUNIXシステムの<code><span class="codeinlineitalic">ORACLE_HOME</span></code><code class="codeph">/rdbms</code>ディレクトリにあります。</p>
<p>サーバーのエラー・メッセージの詳細は、Oracleサーバーのマニュアルを参照してください。</p>
</div>
<!-- class="section" -->
</div>
</div>
<a id="ADFNS989"></a><a id="ADFNS1182"></a>
<div class="sect2"><!-- infolevel="all" infotype="General" --><a name="GUID-52D0B344-1AF6-4F1A-91A4-3089ED199FFF" id="GUID-52D0B344-1AF6-4F1A-91A4-3089ED199FFF"></a><h2 id="SQORA-GUID-52D0B344-1AF6-4F1A-91A4-3089ED199FFF" class="sect2">プログラマ</h2>
<div><div class="section"><p class="subhead1">トピック:</p></div>
<!-- class="section" -->
<ul style="list-style-type: disc;"><li><p><a href="#GUID-618B141E-DD46-4907-99C2-486E801CA878">接続文字列のフォーマット</a></p>
</li>
<li><p><a href="#GUID-F141C2E1-BA44-4399-B72A-3B1FBA2BC750">SQLDriverConnectの実装</a></p>
</li>
<li><p><a href="#GUID-75E82FA6-CDAF-4745-A153-52AB996D2918">プログラムでのロック・タイムアウトの短縮</a></p>
</li>
<li><p><a href="#GUID-CEC1EA8B-B196-47C5-AEEF-239A6540ED5C">odbc32.lib (Windows)またはlibodbc.so (UNIX)とのリンク</a></p>
</li>
<li><p><a href="#GUID-F3BAD19C-24E7-47A7-89D6-65ADFB1D0FA1">ROWIDの情報</a></p>
</li>
<li><p><a href="#GUID-F3F23FDB-F79D-4F9C-AB80-75D4C36F9754">WHERE句でのROWID</a></p>
</li>
<li><p><a href="#GUID-BC046452-8494-4228-BF12-3277C231C42A">結果セットの有効化</a></p>
</li>
<li><p><a href="#GUID-D1800509-12DF-4D6B-A56A-783D3DAF763A">EXEC構文の有効化</a></p>
</li>
<li><p><a href="#GUID-796072D7-C1BA-41FC-B8DA-CBC77C6FF213">Oracle RAC環境における接続障害のイベント通知の有効化</a></p>
</li>
<li><p><a href="#GUID-81368D2F-0CD5-4082-97DA-5A0949068371">ODBCを通じた暗黙的結果機能の使用</a></p>
</li>
<li><p><a href="#GUID-2FEED4F9-9AB8-4CA8-8AA5-C4F2ED862F8E">ODBCのOracle TIMESTAMP WITH TIME ZONEおよびTIMESTAMP WITH LOCAL TIME ZONE列型のサポートについて</a></p>
</li>
<li><p><a href="#GUID-47E39A2A-B3D2-4C61-891B-AD37B7E654C7" title="Oracleクライアントのシステム変数ORA_SDTZの設定の効果を説明します。">Oracleクライアント(OCI、SQL*Plus、Oracle ODBCドライバなど)のORA_SDTZの設定の効果について</a></p>
</li>
<li><p><a href="#GUID-3BA665DB-9B1B-4219-A236-2B2585DE3986">サポートされる機能</a></p>
</li>
<li><p><a href="#GUID-5C81EEFC-CF1C-47D9-927B-48AA4BAA1781">Unicodeサポート</a></p>
</li>
<li><p><a href="#GUID-1150CB70-B2F5-46F8-82EA-61FF38804B31">パフォーマンスおよびチューニング</a></p>
</li>
</ul>
</div>
</div>
<a id="ADFNS1184"></a><a id="ADFNS1185"></a><a id="ADFNS1186"></a><a id="ADFNS1183"></a>
<div class="sect3"><!-- infolevel="all" infotype="General" --><a name="GUID-618B141E-DD46-4907-99C2-486E801CA878" id="GUID-618B141E-DD46-4907-99C2-486E801CA878"></a><h3 id="SQORA-GUID-618B141E-DD46-4907-99C2-486E801CA878" class="sect3">接続文字列のフォーマット</h3>
<div><p>次の表に、<code class="codeph">SQLDriverConnect</code>関数コールの接続文字列引数に組み込むことができるキーワードを示します。指定されていないキーワードは、データソースのAdministratorのエントリから読み込まれます。接続文字列に指定される値はAdministratorのエントリに格納されている値を上書きします。<code class="codeph">SQLDriverConnect</code>関数の詳細は、<span class="italic">Microsoft ODBC 3.52 Software Development Kit and Programmers Reference</span>を参照してください。</p>
<div class="tblformal" id="GUID-618B141E-DD46-4907-99C2-486E801CA878__BABEFBFB">
<a id="BABEFBFB" name="BABEFBFB"></a><p class="titleintable">表: SQLDriverConnect関数コールの接続文字列引数に組み込むことができるキーワード</p>
<table border="1" cellpadding="4" cellspacing="0" class="Formal" frame="hsides" rules="rows" summary="この表では、SQLDrivedConnect関数の接続文字列引数に組み込むことができるキーワードを示しています。" title="SQLDriverConnect関数コールの接続文字列引数に組み込むことができるキーワード" width="100%"><thead><tr align="left" valign="top"><th align="left" valign="bottom" width="17%" id="d5174e47">キーワード</th>
<th align="left" valign="bottom" width="35%" id="d5174e50">意味</th>
<th align="left" valign="bottom" width="47%" id="d5174e53">コメント</th>
</tr>
</thead>
<tbody><tr align="left" valign="top"><td align="left" valign="top" width="17%" id="d5174e58" headers="d5174e47 "><p>DSN</p>
</td>
<td align="left" valign="top" width="35%" headers="d5174e58 d5174e50 "><p>ODBCデータソース名</p>
</td>
<td align="left" valign="top" width="47%" headers="d5174e58 d5174e53 "><p>ユーザー指定名。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="17%" id="d5174e68" headers="d5174e47 "><p>DBQ</p>
</td>
<td align="left" valign="top" width="35%" headers="d5174e68 d5174e50 "><p>TNSサービス名</p>
</td>
<td align="left" valign="top" width="47%" headers="d5174e68 d5174e53 "><p>ユーザー指定名。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="17%" id="d5174e78" headers="d5174e47 "><p>UID</p>
</td>
<td align="left" valign="top" width="35%" headers="d5174e78 d5174e50 "><p>ユーザーIDまたはユーザー名</p>
</td>
<td align="left" valign="top" width="47%" headers="d5174e78 d5174e53 "><p>ユーザー指定名。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="17%" id="d5174e88" headers="d5174e47 "><p>PWD</p>
</td>
<td align="left" valign="top" width="35%" headers="d5174e88 d5174e50 "><p>パスワード</p>
</td>
<td align="left" valign="top" width="47%" headers="d5174e88 d5174e53 "><p>ユーザー指定パスワード。空のパスワードに対しては、PWD=;と指定。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="17%" id="d5174e98" headers="d5174e47 "><p>DBA</p>
</td>
<td align="left" valign="top" width="35%" headers="d5174e98 d5174e50 "><p>データベース属性</p>
</td>
<td align="left" valign="top" width="47%" headers="d5174e98 d5174e53 "><p>W=書込みアクセス。</p>
<p>R=読取り専用アクセス。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="17%" id="d5174e110" headers="d5174e47 "><p>APA</p>
</td>
<td align="left" valign="top" width="35%" headers="d5174e110 d5174e50 "><p>アプリケーション属性</p>
</td>
<td align="left" valign="top" width="47%" headers="d5174e110 d5174e53 "><p>T=スレッド・セーフティ有効。</p>
<p>F=スレッド・セーフティ無効。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="17%" id="d5174e122" headers="d5174e47 "><p>RST</p>
</td>
<td align="left" valign="top" width="35%" headers="d5174e122 d5174e50 "><p>結果セット</p>
</td>
<td align="left" valign="top" width="47%" headers="d5174e122 d5174e53 "><p>T=結果セット有効。</p>
<p>F=結果セット無効。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="17%" id="d5174e134" headers="d5174e47 "><p>QTO</p>
</td>
<td align="left" valign="top" width="35%" headers="d5174e134 d5174e50 "><p>問合せタイムアウトのオプション</p>
</td>
<td align="left" valign="top" width="47%" headers="d5174e134 d5174e53 "><p>T=クエリー・タイムアウト有効。</p>
<p>F=クエリー・タイムアウト無効。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="17%" id="d5174e146" headers="d5174e47 "><p>CSR</p>
</td>
<td align="left" valign="top" width="35%" headers="d5174e146 d5174e50 "><p>カーソル・クローズ</p>
</td>
<td align="left" valign="top" width="47%" headers="d5174e146 d5174e53 "><p>T=カーソル・クローズ有効。</p>
<p>F=カーソル・クローズ無効。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="17%" id="d5174e158" headers="d5174e47 "><p>BNF</p>
</td>
<td align="left" valign="top" width="35%" headers="d5174e158 d5174e50 "><p><code class="codeph">NUMBER</code>を<code class="codeph">FLOAT</code>としてバインド</p>
</td>
<td align="left" valign="top" width="47%" headers="d5174e158 d5174e53 "><p>T=<code class="codeph">NUMBER</code>を<code class="codeph">FLOAT</code>としてバインド。</p>
<p>F=<code class="codeph">NUMBER</code>を<code class="codeph">NUMBER</code>としてバインド。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="17%" id="d5174e187" headers="d5174e47 "><p>DRH</p>
</td>
<td align="left" valign="top" width="35%" headers="d5174e187 d5174e50 "><p>RULEヒントを無効化</p>
</td>
<td align="left" valign="top" width="47%" headers="d5174e187 d5174e53 "><p>T=RULEヒントを無効化。</p>
<p>F=RULEヒントを有効化。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="17%" id="d5174e200" headers="d5174e47 "><p>BAM</p>
</td>
<td align="left" valign="top" width="35%" headers="d5174e200 d5174e50 "><p>バッチ自動コミット・モード</p>
</td>
<td align="left" valign="top" width="47%" headers="d5174e200 d5174e53 "><p>IfAllSuccessful=すべての文が正常終了した場合のみ、コミット(以前の動作)。</p>
<p>UpToFirstFailure=最初の失敗の文までコミット(V7 ODBCの動作)。</p>
<p>AllSuccessful=すべての正常終了した文をコミット(Oracleデータベースに接続されている場合のみ。他のデータベースの場合、V7と同じ動作)。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="17%" id="d5174e214" headers="d5174e47 "><p>FBS</p>
</td>
<td align="left" valign="top" width="35%" headers="d5174e214 d5174e50 "><p>フェッチ・バッファ・サイズ</p>
</td>
<td align="left" valign="top" width="47%" headers="d5174e214 d5174e53 "><p>ユーザー指定の数値(バイト単位で0以上を指定)。</p>
<p>デフォルトは60,000バイトです。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="17%" id="d5174e226" headers="d5174e47 "><p>FEN</p>
</td>
<td align="left" valign="top" width="35%" headers="d5174e226 d5174e50 "><p>フェイルオーバー</p>
</td>
<td align="left" valign="top" width="47%" headers="d5174e226 d5174e53 "><p>T=フェイルオーバー有効。</p>
<p>F=フェイルオーバー無効。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="17%" id="d5174e238" headers="d5174e47 "><p>FRC</p>
</td>
<td align="left" valign="top" width="35%" headers="d5174e238 d5174e50 "><p>フェイルオーバー再試行数</p>
</td>
<td align="left" valign="top" width="47%" headers="d5174e238 d5174e53 "><p>ユーザー指定の数値。</p>
<p>デフォルトは10です。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="17%" id="d5174e250" headers="d5174e47 "><p>FDL</p>
</td>
<td align="left" valign="top" width="35%" headers="d5174e250 d5174e50 "><p>フェイルオーバー遅延</p>
</td>
<td align="left" valign="top" width="47%" headers="d5174e250 d5174e53 "><p>ユーザー指定の数値。</p>
<p>デフォルトは10です。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="17%" id="d5174e262" headers="d5174e47 "><p>LOB</p>
</td>
<td align="left" valign="top" width="35%" headers="d5174e262 d5174e50 "><p>LOB書込み</p>
</td>
<td align="left" valign="top" width="47%" headers="d5174e262 d5174e53 "><p>T=LOB有効。</p>
<p>F=LOB無効。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="17%" id="d5174e274" headers="d5174e47 "><p>MTS</p>
</td>
<td align="left" valign="top" width="35%" headers="d5174e274 d5174e50 "><p>Microsoft Transaction Serverサポート</p>
</td>
<td align="left" valign="top" width="47%" headers="d5174e274 d5174e53 "><p>T=無効。</p>
<p>F=有効。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="17%" id="d5174e286" headers="d5174e47 "><p>FWC</p>
</td>
<td align="left" valign="top" width="35%" headers="d5174e286 d5174e50 "><p><code class="codeph">SQL_WCHAR</code>強制サポート</p>
</td>
<td align="left" valign="top" width="47%" headers="d5174e286 d5174e53 "><p>T=強制<code class="codeph">SQL_WCHAR</code>有効。</p>
<p>F=強制<code class="codeph">SQL_WCHAR</code>無効。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="17%" id="d5174e307" headers="d5174e47 "><p>EXC</p>
</td>
<td align="left" valign="top" width="35%" headers="d5174e307 d5174e50 "><p>EXEC構文</p>
</td>
<td align="left" valign="top" width="47%" headers="d5174e307 d5174e53 "><p>T=EXEC構文有効。</p>
<p>F=EXEC構文無効。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="17%" id="d5174e319" headers="d5174e47 "><p>XSM</p>
</td>
<td align="left" valign="top" width="35%" headers="d5174e319 d5174e50 "><p>スキーマ・フィールド</p>
</td>
<td align="left" valign="top" width="47%" headers="d5174e319 d5174e53 "><p>Default=デフォルト。</p>
<p>Database=データベース名。</p>
<p>Owner=所有者名。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="17%" id="d5174e333" headers="d5174e47 "><p>MDI</p>
</td>
<td align="left" valign="top" width="35%" headers="d5174e333 d5174e50 "><p>メタデータIDのデフォルトの設定</p>
</td>
<td align="left" valign="top" width="47%" headers="d5174e333 d5174e53 "><p>T=<code class="codeph">SQL_ATTR_METADATA_ID</code>のデフォルトを<code class="codeph">SQL_TRUE</code>に設定。</p>
<p>F=<code class="codeph">SQL_ATTR_METADATA_ID</code>のデフォルトを<code class="codeph">SQL_FALSE</code>に設定。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="17%" id="d5174e358" headers="d5174e47 "><p>DPM</p>
</td>
<td align="left" valign="top" width="35%" headers="d5174e358 d5174e50 "><p><code class="codeph">SQLDescribeParam</code>の無効化</p>
</td>
<td align="left" valign="top" width="47%" headers="d5174e358 d5174e53 "><p>T=<code class="codeph">SQLDescribeParam</code>無効。</p>
<p>F=<code class="codeph">SQLDescribeParam</code>有効。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="17%" id="d5174e378" headers="d5174e47 "><p>BTD</p>
</td>
<td align="left" valign="top" width="35%" headers="d5174e378 d5174e50 "><p><code class="codeph">TIMESTAMP</code>を<code class="codeph">DATE</code>としてバインド</p>
</td>
<td align="left" valign="top" width="47%" headers="d5174e378 d5174e53 "><p>T=<code class="codeph">SQL_TIMESTAMP</code>をOracle <code class="codeph">DATE</code>としてバインド</p>
<p>F=<code class="codeph">SQL_TIMESTAMP</code>をOracle <code class="codeph">TIMESTAMP</code>としてバインド</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="17%" id="d5174e405" headers="d5174e47 "><p>NUM</p>
</td>
<td align="left" valign="top" width="35%" headers="d5174e405 d5174e50 "><p>数値の設定</p>
</td>
<td align="left" valign="top" width="47%" headers="d5174e405 d5174e53 "><p>NLS=Oracle NLS数値設定を使用(小数点および3桁区切りの決定)。</p>
<p>MS=Microsoft地域設定を使用。</p>
<p>US=US設定を使用。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="17%" id="d5174e419" headers="d5174e47 "><p>ODA</p>
</td>
<td align="left" valign="top" width="35%" headers="d5174e419 d5174e50 "><p><code class="codeph">OCIDescribeAny( )</code>を使用 </p>
</td>
<td align="left" valign="top" width="47%" headers="d5174e419 d5174e53 "><p>T=アプリケーションが<code class="codeph">REF CURSORS</code>を戻す小さなパッケージ・プロシージャを頻繁にコールする場合にパフォーマンスを向上させるために<code class="codeph">OCIDescribeAny()</code>コールを使用。</p>
<p>F=<code class="codeph">OCIDescribeAny()</code>を使用しない。デフォルトでは、<code class="codeph">OCIDescribeAny()</code>値の使用は<code class="codeph">FALSE</code>です。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="17%" id="d5174e449" headers="d5174e47 "><p>STE</p>
</td>
<td align="left" valign="top" width="35%" headers="d5174e449 d5174e50 "><p>SQLでORAエラーを変換</p>
<p>Oracle ODBC DriverがOracleエラー・コードを変換するかどうかを指定</p>
</td>
<td align="left" valign="top" width="47%" headers="d5174e449 d5174e53 "><p>T=ORAエラーを変換。 </p>
<p>F=ORAエラーを変換しない。デフォルトでは、<code class="codeph">SQLTranslateErrors</code>は<code class="codeph">FALSE</code>です。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="17%" id="d5174e469" headers="d5174e47 "><p>TSZ</p>
</td>
<td align="left" valign="top" width="35%" headers="d5174e469 d5174e50 "><p>トークン・サイズ</p>
</td>
<td align="left" valign="top" width="47%" headers="d5174e469 d5174e53 "><p>ユーザー指定の数値。</p>
<p>トークン・サイズを4 KB (4096バイト)から開始する最も近い1 KB (1024バイト)の倍数に設定します。デフォルト・サイズは8 KB (8192バイト)です。設定できる最大値は128 KB (131068バイト)です。</p>
</td>
</tr>
</tbody>
</table>
</div>
<!-- class="inftblhruleinformal" -->
<p>次のキーワードが接続文字列に指定された場合、Oracle ODBC DriverはAdministratorで定義されている値を読み取りません。</p>
<pre class="oac_no_warn" dir="ltr">DRIVER={Oracle ODBC Driver}
</pre>
<p>有効な接続文字列の例:</p>
<pre class="oac_no_warn" dir="ltr">1) DSN=Personnel;UID=Kotzwinkle;PWD=;2) DRIVER={Oracle ODBC Driver};UID=Kotzwinkle;PWD=whatever;DBQ=instl_alias;DBA=W;
</pre>
<div align="center"><div class="inftblnotealso" id="GUID-618B141E-DD46-4907-99C2-486E801CA878__NOTE-127-CB47C9FD"><a id="NOTE-127-CB47C9FD" name="NOTE-127-CB47C9FD"></a><br /><table cellpadding="3" cellspacing="0" class="NoteAlso oac_no_warn" summary=""><tbody><tr><td><p class="notep1">関連項目:</p><ul style="list-style-type: disc;"><li><p>すべてのユーザーは、<a href="#GUID-A9C50E35-4766-47A1-933F-D35DB27E7C46">「Oracleデータソースへの接続」</a>を参照してください</p>
</li>
<li><p>プログラマは、<a href="#GUID-F141C2E1-BA44-4399-B72A-3B1FBA2BC750">「SQLDriverConnectの実装」</a>を参照してください</p>
</li>
</ul>
</td></tr></tbody></table><br /></div></div>
</div>
</div>
<a id="ADFNS1189"></a><a id="ADFNS1188"></a>
<div class="sect3"><!-- infolevel="all" infotype="General" --><a name="GUID-F141C2E1-BA44-4399-B72A-3B1FBA2BC750" id="GUID-F141C2E1-BA44-4399-B72A-3B1FBA2BC750"></a><h3 id="SQORA-GUID-F141C2E1-BA44-4399-B72A-3B1FBA2BC750" class="sect3">SQLDriverConnectの実装</h3>
<div><p>次の表では、SQLDriverConnect接続文字列で必要なキーワードを説明しています。</p>
<div class="tblformal" id="GUID-F141C2E1-BA44-4399-B72A-3B1FBA2BC750__BABGEAEC">
<a id="BABGEAEC" name="BABGEAEC"></a><p class="titleintable">表: SQLDriverConnect接続文字列で必要なキーワード</p>
<table border="1" cellpadding="4" cellspacing="0" class="Formal" frame="hsides" rules="rows" summary="この表では、SQLDriverConnect接続文字列で必要なキーワードを説明しています。" title="SQLDriverConnect接続文字列で必要なキーワード" width="100%"><thead><tr align="left" valign="top"><th align="left" valign="bottom" width="31%" id="d7209e35">キーワード</th>
<th align="left" valign="bottom" width="69%" id="d7209e38">説明</th>
</tr>
</thead>
<tbody><tr align="left" valign="top"><td align="left" valign="top" width="31%" id="d7209e43" headers="d7209e35 "><p>DSN</p>
</td>
<td align="left" valign="top" width="69%" headers="d7209e43 d7209e38 "><p>データソース名。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="31%" id="d7209e50" headers="d7209e35 "><p>DBQ</p>
</td>
<td align="left" valign="top" width="69%" headers="d7209e50 d7209e38 "><p>TNSサービス名。<a href="#GUID-A464ED4A-6131-46AC-8EB6-3F697C2BAF3E">「Oracle ODBC DriverのTNSサービス名の作成」</a>を参照してください。詳細は、Oracle Net Servicesのマニュアルを参照してください。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="31%" id="d7209e61" headers="d7209e35 "><p>UID</p>
</td>
<td align="left" valign="top" width="69%" headers="d7209e61 d7209e38 "><p>ユーザーのログインIDまたはユーザー名。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="31%" id="d7209e68" headers="d7209e35 "><p>PWD</p>
</td>
<td align="left" valign="top" width="69%" headers="d7209e68 d7209e38 "><p>ユーザー指定のパスワード。</p>
</td>
</tr>
</tbody>
</table>
</div>
<!-- class="inftblhruleinformal" -->
</div>
</div>
<a id="ADFNS1190"></a>
<div class="sect3"><!-- infolevel="all" infotype="General" --><a name="GUID-75E82FA6-CDAF-4745-A153-52AB996D2918" id="GUID-75E82FA6-CDAF-4745-A153-52AB996D2918"></a><h3 id="SQORA-GUID-75E82FA6-CDAF-4745-A153-52AB996D2918" class="sect3">プログラムでのロック・タイムアウトの短縮</h3>
<div><div class="section"><p>Oracleサーバーは、トランザクション間のロック競合が解消されるまで無期限に待機します。データソースに接続する前にODBC <code class="codeph">SQLSetConnectAttr</code>関数をコールすることによって、ロック解消をOracleサーバーが待機する時間の長さを制限できます。ODBC <code class="codeph">SQLSetStmtAttr</code>関数の<code class="codeph">SQL_ATTR_QUERY_TIMEOUT</code>属性に0 (ゼロ)以外の値を指定します。</p>
<p>ODBC <code class="codeph">SQLSetConnectAttr</code>関数を使用してロック・タイムアウト値を指定すると、その値によって<code class="codeph">oraodbc.ini</code>ファイルに指定されている値が上書きされます。 </p>
<div align="center"><div class="inftblnotealso" id="GUID-75E82FA6-CDAF-4745-A153-52AB996D2918__REFERTOREDUCINGLOCKTIMEOUTFORMOREIN-CB4B07E6"><a id="REFERTOREDUCINGLOCKTIMEOUTFORMOREIN-CB4B07E6" name="REFERTOREDUCINGLOCKTIMEOUTFORMOREIN-CB4B07E6"></a><br /><table cellpadding="3" cellspacing="0" class="NoteAlso oac_no_warn" summary=""><tbody><tr><td><p class="notep1">関連項目:</p><p><code class="codeph">oraodbc.ini</code>ファイルに値を指定する方法の詳細は、<a href="#GUID-6F8AF384-EF77-4EBA-AD45-4F54FF1A6739">「ロック・タイムアウトを短縮する」</a>を参照してください</p>
</td></tr></tbody></table><br /></div></div>
</div>
<!-- class="section" -->
</div>
</div>
<a id="ADFNS1191"></a>
<div class="sect3"><!-- infolevel="all" infotype="General" --><a name="GUID-CEC1EA8B-B196-47C5-AEEF-239A6540ED5C" id="GUID-CEC1EA8B-B196-47C5-AEEF-239A6540ED5C"></a><h3 id="SQORA-GUID-CEC1EA8B-B196-47C5-AEEF-239A6540ED5C" class="sect3">odbc32.lib (Windows)またはlibodbc.so (UNIX)とのリンク</h3>
<div><div class="section"><p>Windowsプラットフォームの場合、プログラムをリンクするときは、インポート・ライブラリ<code class="codeph">odbc32.lib</code>とリンクする必要があります。 </p>
<p>UNIXプラットフォームの場合は、ODBCアプリケーションを<code class="codeph">libodbc.so</code>にリンクする必要があります。</p>
</div>
<!-- class="section" -->
</div>
</div>
<a id="ADFNS1192"></a>
<div class="sect3"><!-- infolevel="all" infotype="General" --><a name="GUID-F3BAD19C-24E7-47A7-89D6-65ADFB1D0FA1" id="GUID-F3BAD19C-24E7-47A7-89D6-65ADFB1D0FA1"></a><h3 id="SQORA-GUID-F3BAD19C-24E7-47A7-89D6-65ADFB1D0FA1" class="sect3">ROWIDの情報</h3>
<div><p>ODBC <code class="codeph">SQLSpecialColumns</code>関数は表の列に関する情報を戻します。Oracle ODBC Driverでは、Oracle表に対応付けられているOracleのROWIDについての情報が戻されます。 </p>
</div>
</div>
<a id="ADFNS1193"></a>
<div class="sect3"><!-- infolevel="all" infotype="General" --><a name="GUID-F3F23FDB-F79D-4F9C-AB80-75D4C36F9754" id="GUID-F3F23FDB-F79D-4F9C-AB80-75D4C36F9754"></a><h3 id="SQORA-GUID-F3F23FDB-F79D-4F9C-AB80-75D4C36F9754" class="sect3">WHERE句でのROWID</h3>
<div><p>ROWIDはSQL文の<code class="codeph">WHERE</code>句で使用できます。ただし、ROWID値はパラメータ・マーカー内で使用する必要があります。 </p>
</div>
</div>
<a id="ADFNS1194"></a>
<div class="sect3"><!-- infolevel="all" infotype="General" --><a name="GUID-BC046452-8494-4228-BF12-3277C231C42A" id="GUID-BC046452-8494-4228-BF12-3277C231C42A"></a><h3 id="SQORA-GUID-BC046452-8494-4228-BF12-3277C231C42A" class="sect3">結果セットの有効化</h3>
<div><div class="section"><p>Oracleの参照カーソル(結果セット)によって、アプリケーションはストアド・ファンクションやストアド・プロシージャを使用してデータを取り出せるようになります。次にODBCを介して結果セットを使用可能にする方法を示します。</p>
</div>
<!-- class="section" -->
<div class="section"><ul style="list-style-type: disc;"><li><p>ストアド・プロシージャのコールにはODBC構文を使用する必要があります。ネイティブのPL/SQLはODBCからはサポートされていません。次にパッケージ内のおよびパッケージなしのプロシージャまたはファンクションのコール方法を示します。ここでのパッケージ名をRSETとします。</p>
<pre class="oac_no_warn" dir="ltr">Procedure call:
{CALL Example1(?)}
{CALL RSET.Example1(?)}
Function Call:
{? = CALL Example1(?)}
{? = CALL RSET.Example1(?)}
</pre>
</li>
<li><p>PL/SQLの参照カーソル・パラメータは、プロシージャのコール時に省略されます。たとえば、Example2プロシージャが4つのパラメータを持つと仮定します。パラメータ1と3は参照カーソルで、パラメータ2と4は文字列です。コールは次のように指定されます。</p>
<pre class="oac_no_warn" dir="ltr">{CALL RSET.Example2("Literal 1", "Literal 2")}
</pre>
</li>
</ul>
<p>次のサンプル・アプリケーションでは、Oracle ODBC Driverを使用して結果セットを返す方法を示します。</p>
<pre class="oac_no_warn" dir="ltr">/*
* Sample Application using Oracle reference cursors via ODBC
*
* Assumptions:
*
* 1) Oracle Sample database is present with data loaded for the EMP table.
* 2) Two fields are referenced from the EMP table ename and mgr.
* 3) A data source has been setup to access the sample database.
*
* Program Description:
*
* Abstract:
*
* This program demonstrates how to return result sets using
* Oracle stored procedures
*
* Details:
*
* This program:
* Creates an ODBC connection to the database.
* Creates a Packaged Procedure containing two result sets.
* Executes the procedure and retrieves the data from both result sets.
* Displays the data to the user.
* Deletes the package then logs the user out of the database.
*
*
* The following is the actual PL/SQL this code generates to
* create the stored procedures.
*
* DROP PACKAGE ODBCRefCur;
*
* CREATE PACKAGE ODBCRefCur AS
* TYPE ename_cur IS REF CURSOR;
* TYPE mgr_cur IS REF CURSOR;
* PROCEDURE EmpCurs(Ename IN OUT ename_cur, Mgr IN OUT mgr_cur, pjob IN VARCHAR2);
* END;
*
* CREATE or REPLACE PACKAGE BODY ODBCRefCur AS
* PROCEDURE EmpCurs(Ename IN OUT ename_cur, Mgr IN OUT mgr_cur, pjob IN VARCHAR2)
* AS
* BEGIN
* IF NOT Ename%ISOPEN
* THEN
* OPEN Ename for SELECT ename from emp;
* END IF;
* IF NOT Mgr%ISOPEN
* THEN
* OPEN Mgr for SELECT mgr from emp where job = pjob;
* END IF;
* END;
* END;
*
*/
/* Include Files */
#ifdef WIN32
#include <windows.h>
#endif
#include <stdio.h>
#include <sql.h>
#include <sqlext.h>
/* Defines */
#define JOB_LEN 9
#define DATA_LEN 100
#define SQL_STMT_LEN 500
/* Procedures */
void DisplayError(SWORD HandleType, SQLHANDLE hHandle, char *Module);
/* Main Program */
int main()
{
SQLHENV hEnv;
SQLHDBC hDbc;
SQLHSTMT hStmt;
SQLRETURN rc;
char *DefUserName ="scott";
char *DefPassWord ="tiger";
SQLCHAR ServerName[DATA_LEN];
SQLCHAR *pServerName=ServerName;
SQLCHAR UserName[DATA_LEN];
SQLCHAR *pUserName=UserName;
SQLCHAR PassWord[DATA_LEN];
SQLCHAR *pPassWord=PassWord;
char Data[DATA_LEN];
SQLINTEGER DataLen;
char error[DATA_LEN];
char *charptr;
SQLCHAR SqlStmt[SQL_STMT_LEN];
SQLCHAR *pSqlStmt=SqlStmt;
char *pSalesMan = "SALESMAN";
SQLINTEGER sqlnts=SQL_NTS;
/* Allocate the Environment Handle */
rc = SQLAllocHandle( SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hEnv );
if (rc != SQL_SUCCESS)
{
printf( "Cannot Allocate Environment Handle/n");
printf( "/nHit Return to Exit/n");
charptr = gets ((char *)error);
exit(1);
}
/* Set the ODBC Version */
rc = SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, (void *)SQL_OV_ODBC3, 0);
if (rc != SQL_SUCCESS)
{
printf("Cannot Set ODBC Version/n");
printf("/nHit Return to Exit/n");
charptr = gets((char *)error);
exit(1);
}
/* Allocate the Connection handle */
rc = SQLAllocHandle(SQL_HANDLE_DBC, hEnv, &hDbc);
if (rc != SQL_SUCCESS)
{
printf("Cannot Allocate Connection Handle/n");
printf("/nHit Return to Exit/n");
charptr = gets((char*) error);
exit(1);
}
/* Get User Information */
lstrcpy((char*) pUserName, DefUserName);
lstrcpy((char*) pPassWord, DefPassWord);
/* Data Source name */
printf( "/nEnter the ODBC Data Source Name/n" );
charptr = gets((char*) ServerName);
/* User Name */
printf("/nEnter User Name Default [%s]/n", pUserName);
charptr = gets((char*) UserName);
if (*charptr == '/0')
{
lstrcpy((char*) pUserName, (char*) DefUserName);
}
/* Password */
printf ("/nEnter Password Default [%s]/n", pPassWord);
charptr = gets((char*) PassWord);
if (*charptr == '/0')
{
lstrcpy((char*) pPassWord, (char*) DefPassWord);
}
/* Connection to the database */
rc = SQLConnect(hDbc, pServerName, (SQLSMALLINT) lstrlen((char *)pServerName), pUserName,
(SQLSMALLINT) lstrlen((char*)pUserName), pPassWord,
(SQLSMALLINT) lstrlen((char *)pPassWord));
if (rc != SQL_SUCCESS)
{
DisplayError(SQL_HANDLE_DBC, hDbc, "SQLConnect");
}
/* Allocate a Statement */
rc = SQLAllocHandle(SQL_HANDLE_STMT, hDbc, &hStmt);
if (rc != SQL_SUCCESS)
{
printf( "Cannot Allocate Statement Handle/n");
printf( "/nHit Return to Exit/n");
charptr = gets((char *)error);
exit(1);
}
/* Drop the Package */
lstrcpy((char *) pSqlStmt, "DROP PACKAGE ODBCRefCur");
rc = SQLExecDirect(hStmt, pSqlStmt, lstrlen((char *)pSqlStmt));
/* Create the Package Header */
lstrcpy((char *) pSqlStmt, "CREATE PACKAGE ODBCRefCur AS/n" );
lstrcat((char *) pSqlStmt, " TYPE ename_cur IS REF CURSOR;/n" );
lstrcat((char *) pSqlStmt, " TYPE mgr_cur IS REF CURSOR;/n" );
lstrcat((char *) pSqlStmt, " PROCEDURE EmpCurs (Ename IN OUT ename_cur," );
lstrcat((char *) pSqlStmt, " Mgr IN OUT mgr_cur,pjob IN VARCHAR2);/n/n");
lstrcat((char *) pSqlStmt, "END;/n" );
rc = SQLExecDirect(hStmt, pSqlStmt, lstrlen((char *)pSqlStmt));
if (rc != SQL_SUCCESS)
{
DisplayError(SQL_HANDLE_STMT, hStmt, "SQLExecDirect");
}
/* Create the Package Body */
lstrcpy((char *) pSqlStmt, "CREATE PACKAGE BODY ODBCRefCur AS/n" );
lstrcat((char *) pSqlStmt, " PROCEDURE EmpCurs (Ename IN OUT ename_cur," );
lstrcat((char *) pSqlStmt, " Mgr IN OUT mgr_cur, pjob IN VARCHAR2)/n" );
lstrcat((char *) pSqlStmt, " AS/n" );
lstrcat((char *) pSqlStmt, " BEGIN/n" );
lstrcat((char *) pSqlStmt, " IF NOT Ename%ISOPEN/n" );
lstrcat((char *) pSqlStmt, " THEN/n" );
lstrcat((char *) pSqlStmt, " OPEN Ename for SELECT ename from emp;/n" );
lstrcat((char *) pSqlStmt, " END IF;/n/n" );
lstrcat((char *) pSqlStmt, " IF NOT Mgr%ISOPEN/n THEN/n" );
lstrcat((char *) pSqlStmt, " OPEN Mgr for SELECT mgr from emp where job = pjob;/n");
lstrcat((char *) pSqlStmt, " END IF;/n" );
lstrcat((char *) pSqlStmt, " END;/n" );
lstrcat((char *) pSqlStmt, "END;/n" );
rc = SQLExecDirect(hStmt, pSqlStmt, lstrlen((char *)pSqlStmt));
if(rc != SQL_SUCCESS)
DisplayError(SQL_HANDLE_STMT, hStmt, "SQLExecDirect");
/* Bind the Parameter */
rc = SQLBindParameter(hStmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, JOB_LEN, 0, pSalesMan, 0, &sqlnts);
/* Call the Store Procedure which executes the Result Sets */
lstrcpy( (char *) pSqlStmt, "{CALL ODBCRefCur.EmpCurs(?)}");
rc = SQLExecDirect(hStmt, pSqlStmt, lstrlen((char *)pSqlStmt));
if(rc != SQL_SUCCESS)
DisplayError(SQL_HANDLE_STMT, hStmt, "SQLExecDirect");
/* Bind the Data */
rc = SQLBindCol(hStmt, 1, SQL_C_CHAR, Data, sizeof(Data), &DataLen);
if(rc != SQL_SUCCESS)
DisplayError(SQL_HANDLE_STMT, hStmt, "SQLBindCol");
/* Get the data for Result Set 1 */
printf("/nEmployee Names/n/n");
while(rc == SQL_SUCCESS)
{
rc = SQLFetch(hStmt);
if(rc == SQL_SUCCESS)
printf("%s/n", Data);
else
if(rc != SQL_NO_DATA)
DisplayError(SQL_HANDLE_STMT, hStmt, "SQLFetch");
}
printf( "/nFirst Result Set - Hit Return to Continue/n");
charptr = gets ((char *)error);
/* Get the Next Result Set */
rc = SQLMoreResults( hStmt );
if(rc != SQL_SUCCESS)
DisplayError(SQL_HANDLE_STMT, hStmt, "SQLMoreResults");
/* Get the data for Result Set 2 */
printf("/nManagers/n/n");
while (rc == SQL_SUCCESS)
{
rc = SQLFetch(hStmt);
if(rc == SQL_SUCCESS)
printf("%s/n", Data);
else
if (rc != SQL_NO_DATA)
DisplayError(SQL_HANDLE_STMT, hStmt, "SQLFetch");
}
printf("/nSecond Result Set - Hit Return to Continue/n");
charptr = gets((char *)error);
/* Should Be No More Results Sets */
rc = SQLMoreResults( hStmt );
if (rc != SQL_NO_DATA)
DisplayError(SQL_HANDLE_STMT, hStmt, "SQLMoreResults");
/* Drop the Package */
lstrcpy((char *)pSqlStmt, "DROP PACKAGE ODBCRefCur");
rc = SQLExecDirect(hStmt, pSqlStmt, lstrlen((char *)pSqlStmt));
/* Free handles close connections to the database */
SQLFreeHandle( SQL_HANDLE_STMT, hStmt );
SQLDisconnect( hDbc );
SQLFreeHandle( SQL_HANDLE_DBC, hDbc );
SQLFreeHandle( SQL_HANDLE_ENV, hEnv );
printf( "/nAll Done - Hit Return to Exit/n");
charptr = gets ((char *)error);
return(0);
}
/* Display Error Messages */
void DisplayError( SWORD HandleType, SQLHANDLE hHandle, char *Module )
{
SQLCHAR MessageText[255];
SQLCHAR SQLState[80];
SQLRETURN rc=SQL_SUCCESS;
LONG NativeError;
SWORD RetLen;
SQLCHAR error[25];
char *charptr;
rc = SQLGetDiagRec(HandleType, hHandle, 1, SQLState, &NativeError, MessageText, 255, &RetLen);
printf( "Failure Calling %s/n", Module );
if (rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO)
{
printf( "/t/t/t State: %s/n", SQLState);
printf( "/t/t/t Native Error: %d/n", NativeError );
printf( "/t/t/t Error Message: %s/n", MessageText );
}
printf( "/nHit Return to Exit/n");
charptr = gets ((char *)error);
exit(1);
}</pre>
</div>
<!-- class="section" -->
</div>
</div>
<a id="ADFNS1195"></a>
<div class="sect3"><!-- infolevel="all" infotype="General" --><a name="GUID-D1800509-12DF-4D6B-A56A-783D3DAF763A" id="GUID-D1800509-12DF-4D6B-A56A-783D3DAF763A"></a><h3 id="SQORA-GUID-D1800509-12DF-4D6B-A56A-783D3DAF763A" class="sect3">EXEC構文の有効化</h3>
<div><div class="section"><p>このオプションを有効にすると、変更なしに変換可能な場合、Oracle ODBC Driverによって、SQL Server <code class="codeph">EXEC</code>文の構文が対応するOracleプロシージャ・コールに変換されます。</p>
<p>SQL Serverプロシージャの絶対名は最大4つの識別子から構成されます。</p>
</div>
<!-- class="section" -->
<div class="section"><ul style="list-style-type: disc;"><li><p>サーバー名</p>
</li>
<li><p>データベース名</p>
</li>
<li><p>所有者名</p>
</li>
<li><p>プロシージャ名</p>
</li>
</ul>
<p>名称のフォーマットは次のとおりです。</p>
<pre class="oac_no_warn" dir="ltr">[[[server.][database].][owner_name].]procedure_name
</pre>
<p>SQL ServerデータベースからOracleへの移行時、それぞれのSQL Serverプロシージャ(またはファンクション)定義は、対応するOracle構文に変換され、Oracleスキーマに定義されます。移行されたプロシージャは次の方法のうちのいずれか1つの方法で再編(およびスキーマ内で作成)されます。 </p>
<ul style="list-style-type: disc;"><li><p>全プロシージャは、1つのスキーマに移行されます(デフォルト・オプション)。</p>
</li>
<li><p>1つのSQL Serverデータベースに定義されたすべてのプロシージャは、そのデータベース名のスキーマに移行されます。</p>
</li>
<li><p>1人のユーザーに所有されるすべてのプロシージャは、そのユーザー名のスキーマに移行されます。 </p>
</li>
</ul>
<p>これら3つのプロシージャ移行編成を行うには、変換するプロシージャに対し、いずれかのスキーマ名オプションを指定できます。変換されたOracleプロシージャ・コール内のオブジェクト名は、大/小文字の区別はしません。</p>
</div>
<!-- class="section" -->
</div>
</div>
<a id="ADFNS1196"></a>
<div class="sect3"><!-- infolevel="all" infotype="General" --><a name="GUID-796072D7-C1BA-41FC-B8DA-CBC77C6FF213" id="GUID-796072D7-C1BA-41FC-B8DA-CBC77C6FF213"></a><h3 id="SQORA-GUID-796072D7-C1BA-41FC-B8DA-CBC77C6FF213" class="sect3">Oracle RAC環境における接続障害のイベント通知の有効化</h3>
<div><div class="section"><p>Oracle Real Application Clusters (Oracle RAC)データベース環境で接続障害が発生したときに、<code class="codeph"> SQLSetConnectAttr</code>関数の<code class="codeph">SQL_ORCLATTR_FAILOVER_CALLBACK</code>および<code class="codeph">SQL_ORCLATTR_FAILOVER_HANDLE</code>属性が設定されている場合、イベント通知が有効になります。どちらの属性も、<code class="codeph">SQLSetConnectAttr</code>関数を使用して設定されます。新規属性のシンボルは、ファイルsqora.hで定義されています。</p>
<p><code class="codeph">SQL_ORCLATTR_FAILOVER_CALLBACK</code>属性では、障害イベントが発生したときにコールするルーチンのアドレスを指定します。</p>
<p><code class="codeph">SQL_ORCLATTR_FAILOVER_HANDLE</code>属性では、コールバック・ルーチンのパラメータとして渡されるコンテキスト・ハンドルを指定します。この属性は、ODBCアプリケーションで障害イベントが発生している接続を判別するために必要です。</p>
<p>コールバック・ルーチンの関数プロトタイプは次のとおりです。</p>
<pre class="oac_no_warn" dir="ltr">void failover_callback(void *handle, SQLINTEGER fo_code)
</pre>
<p>'handle'パラメータは、<code class="codeph">SQL_ORCLATTR_FAILOVER_HANDLE</code>属性により設定された値です。この属性が設定されていない場合、NULLが戻されます。</p>
<p><code class="codeph">fo_code</code>パラメータにより、発生している障害イベントが識別されます。障害イベントは、OCIプログラミング・インタフェースで定義されているイベントに直接マップされます。発生する可能性があるイベントのリストを次に示します。</p>
</div>
<!-- class="section" -->
<div class="section"><ul style="list-style-type: disc;"><li><p><code class="codeph">ODBC_FO_BEGIN</code></p>
</li>
<li><p><code class="codeph">ODBC_FO_ERROR</code></p>
</li>
<li><p><code class="codeph">ODBC_FO_ABORT</code></p>
</li>
<li><p><code class="codeph">ODBC_FO_REAUTH</code></p>
</li>
<li><p><code class="codeph">ODBC_FO_END</code></p>
</li>
</ul>
<p>この機能の使用方法を示したサンプル・プログラムは次のとおりです。</p>
<pre class="oac_no_warn" dir="ltr">/*
NAME
ODBCCallbackTest
DESCRIPTION
Simple program to demonstrate the connection failover callback feature.
PUBLIC FUNCTION(S)
main
PRIVATE FUNCTION(S)
NOTES
Command Line: ODBCCallbackTest filename [odbc-driver]
*/
#include <windows.h>
#include <tchar.h>
#include <malloc.h>
#include <stdio.h>
#include <string.h>
#include <sql.h>
#include <sqlext.h>
#include "sqora.h"
/*
** Function Prototypes
*/
void display_errors(SQLSMALLINT HandleType, SQLHANDLE Handle);
void failover_callback(void *Handle, SQLINTEGER fo_code);
/*
** Macros
*/
#define ODBC_STS_CHECK(sts) \
if (sts != SQL_SUCCESS) \
{ \
display_errors(SQL_HANDLE_ENV, hEnv); \
display_errors(SQL_HANDLE_DBC, hDbc); \
display_errors(SQL_HANDLE_STMT, hStmt); \
return FALSE; \
}
/*
** ODBC Handles
*/
SQLHENV *hEnv = NULL; // ODBC Environment Handle
SQLHANDLE *hDbc = NULL; // ODBC Connection Handle
SQLHANDLE *hStmt = NULL; // ODBC Statement Handle
/*
** Connection Information
*/
TCHAR *dsn = _T("odbctest");
TCHAR *uid = _T("scott");
TCHAR *pwd = _T("tiger");
TCHAR *szSelect = _T("select * from emp");
/*
** MAIN Routine
*/
main(int argc, char **argv)
{
SQLRETURN rc;
/*
** Allocate handles
*/
rc = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, (SQLHANDLE *)&hEnv);
ODBC_STS_CHECK(rc)
rc = SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
ODBC_STS_CHECK(rc);
rc = SQLAllocHandle(SQL_HANDLE_DBC, hEnv, (SQLHANDLE *)&hDbc);
ODBC_STS_CHECK(rc);
/*
** Connect to the database
*/
rc = SQLConnect(hDbc, dsn, (SQLSMALLINT)_tcslen(dsn),
uid, (SQLSMALLINT)_tcslen(uid),
pwd, (SQLSMALLINT)_tcslen(pwd));
ODBC_STS_CHECK(rc);
/*
** Set the connection failover attributes
*/
rc = SQLSetConnectAttr(hDbc, SQL_ORCLATTR_FAILOVER_CALLBACK, &failover_callback, 0);
ODBC_STS_CHECK(rc);
rc = SQLSetConnectAttr(hDbc, SQL_ORCLATTR_FAILOVER_HANDLE, hDbc, 0);
ODBC_STS_CHECK(rc);
/*
** Allocate the statement handle
*/
rc = SQLAllocHandle(SQL_HANDLE_STMT, hDbc, (SQLHANDLE *)&hStmt);
ODBC_STS_CHECK(rc);
/*
** Wait for connection failovers
*/
while (TRUE)
{
Sleep(5000);
rc = SQLExecDirect(hStmt,szSelect, _tcslen(szSelect));
ODBC_STS_CHECK(rc);
rc = SQLFreeStmt(hStmt, SQL_CLOSE);
ODBC_STS_CHECK(rc);
}
/*
** Free up the handles and close the connection
*/
rc = SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
ODBC_STS_CHECK(rc);
rc = SQLDisconnect(hDbc);
ODBC_STS_CHECK(rc);
rc = SQLFreeHandle(SQL_HANDLE_DBC, hDbc);
ODBC_STS_CHECK(rc);
rc = SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
ODBC_STS_CHECK(rc);
return TRUE;
}
/*
** Failover Callback Routine
*/
void failover_callback(void *Handle, SQLINTEGER fo_code)
{
switch(fo_code)
{
case ODBC_FO_BEGIN:
printf("ODBC_FO_BEGIN recevied\n");
break;
case ODBC_FO_ERROR:
printf("ODBC_FO_ERROR recevied\n");
break;
case ODBC_FO_ABORT:
printf("ODBC_FO_ABORT recevied\n");
break;
case ODBC_FO_REAUTH:
printf("ODBC_FO_REAUTH recevied\n");
break;
case ODBC_FO_END:
printf("ODBC_FO_END recevied\n");
break;
default:
printf("Invalid or unknown ODBC failover code recevied\n");
break;
}
return;
}
/*
** Retrieve the errors associated with the handle passed
** and display them.
*/
void display_errors(SQLSMALLINT HandleType, SQLHANDLE Handle)
{
SQLTCHAR MessageText[256];
SQLTCHAR SqlState[5+1];
SQLSMALLINT i=1;
SQLINTEGER NativeError;
SQLSMALLINT TextLength;
SQLRETURN sts = SQL_SUCCESS;
if (Handle == NULL) return;
/* Make sure all SQLState text is null terminated */
SqlState[5] = '\0';
/*
** Fetch and display all diagnostic records that exist for this handle
*/
while (sts == SQL_SUCCESS)
{
NativeError = 0;
TextLength = 0;
sts = SQLGetDiagRec(HandleType, Handle, i, SqlState, &NativeError, (SQLTCHAR *)&MessageText, sizeof(MessageText), &TextLength);
if (sts == SQL_SUCCESS)
{
printf("[%s]%s\n", SqlState, MessageText);
if (NativeError != 0)
printf("Native Error Code: %d\n", NativeError);
i++;
}
}
return;
}</pre>
</div>
<!-- class="section" -->
</div>
</div>
<a id="ADFNS315"></a>
<div class="sect3"><!-- infolevel="all" infotype="General" --><a name="GUID-81368D2F-0CD5-4082-97DA-5A0949068371" id="GUID-81368D2F-0CD5-4082-97DA-5A0949068371"></a><h3 id="SQORA-GUID-81368D2F-0CD5-4082-97DA-5A0949068371" class="sect3">ODBCを通じた暗黙的結果機能の使用</h3>
<div><div class="section"><p>このオプションは、サード・パーティODBCアプリケーションをOracleデータベースに移行し、前のベンダーでサポートされている暗黙的結果機能を使用する場合に使用します。Oracle ODBC Driverでは、ストアド・プロシージャまたは匿名PL/SQLブロックでの暗黙的結果がサポートされます。現在のリリースでは、暗黙的結果は<code class="codeph">SELECT</code>文でのみ戻されます。</p>
<p>次のコード例は、暗黙的結果に匿名SQLスクリプトを使用したODBCテスト・ケースの例を示しています。</p>
<pre class="oac_no_warn" dir="ltr">const char *query1="declare \
c1 sys_refcursor; \
c2 sys_refcursor; \
begin \
open c1 for select empno,ename from emp where rownum<=3; \
dbms_sql.return_result(c1); \
open c2 for select empno,ename from emp where rownum<=3; \
dbms_sql.return_result(c2); end; ";
int main( )
{
...
...
//Allocate all required handles and establish a connection to the database.
//Prepare and execute the above anonymous PL/SQL block
SQLPrepare (hstmt, (SQLCHAR *) query1, SQL_NTS);
SQLExecute(hstmt);
//Bind the columns for the results from the first SELECT statement in an anonymous block.
SQLBindCol (hstmt, 1, SQL_C_ULONG, &eno, 0, &jind);
SQLBindCol (hstmt, 2, SQL_C_CHAR, empname, sizeof (empname),&enind);
//Fetch implicit results through the SQLFetch( ) call.
while((retCode = SQLFetch(hstmt)) != SQL_NO_DATA)
{
//Do whatever you want to do with the data.
}
retCode = SQLMoreResults(hstmt);
if(retCode == SQL_SUCCESS)
{
printf("SQLMoreResults returned with SQL_SUCCESS\n");
//Bind the columns for the results from the second SELECT statement in an anonymous block.
SQLBindCol (hstmt, 1, SQL_C_ULONG, &eno, 0, &jind);
SQLBindCol (hstmt, 2, SQL_C_CHAR, empname, sizeof (empname),&enind);
//Fetch implicit results through the SQLFetch( ) call.
while((retCode = SQLFetch(hstmt)) != SQL_NO_DATA)
{
//Do whatever you want to do with data.
}
}
}</pre>
</div>
<!-- class="section" -->
</div>
</div>
<div class="sect3"><!-- infolevel="all" infotype="General" --><a name="GUID-2FEED4F9-9AB8-4CA8-8AA5-C4F2ED862F8E" id="GUID-2FEED4F9-9AB8-4CA8-8AA5-C4F2ED862F8E"></a><h3 id="SQORA-GUID-2FEED4F9-9AB8-4CA8-8AA5-C4F2ED862F8E" class="sect3">ODBCのOracle TIMESTAMP WITH TIME ZONEおよびTIMESTAMP WITH LOCAL TIME ZONE列型のサポートについて</h3>
<div><p></p>
<p>タイム・ゾーンは、システム変数<code class="codeph">ORA_SDTZ</code>で指示されます。システム変数を<code class="codeph">'OS_TZ'</code>、<code class="codeph">'DB_TZ'</code>または有効なタイム・ゾーン値に設定できます。<code class="codeph">ORA_SDTZ</code>が<code class="codeph">'OS_TZ'</code>に設定されている場合、オペレーティング・システムのタイム・ゾーンが使用されます。<code class="codeph">'DB_TZ'</code>に設定されている場合、データベースに設定されているデフォルトのタイム・ゾーンが使用されます。</p>
<p>デフォルトで<code class="codeph">ORA_SDTZ</code>が設定されていない場合、オペレーティング・システムのタイム・ゾーンが使用されます。</p>
<div align="center"><div class="inftblnote" id="GUID-2FEED4F9-9AB8-4CA8-8AA5-C4F2ED862F8E__GUID-24D8C4E7-7209-442C-BA23-8D0BA818F64A"><a id="GUID-24D8C4E7-7209-442C-BA23-8D0BA818F64A" name="GUID-24D8C4E7-7209-442C-BA23-8D0BA818F64A"></a><br /><table cellpadding="3" cellspacing="0" class="Note oac_no_warn" summary=""><tbody><tr><td><p class="notep1">注意:</p><p>Microsoft Windows環境のレジストリ、システム環境変数またはコマンド・プロンプト・ウィンドウで<code class="codeph">ORA_SDTZ</code>変数を設定する場合、タイム・ゾーン値を引用符で囲まないでください。</p>
</td></tr></tbody></table><br /></div></div>
<div align="center"><div class="inftblnotealso" id="GUID-2FEED4F9-9AB8-4CA8-8AA5-C4F2ED862F8E__NOTE-144-CB4B6FA8"><a id="NOTE-144-CB4B6FA8" name="NOTE-144-CB4B6FA8"></a><br /><table cellpadding="3" cellspacing="0" class="NoteAlso oac_no_warn" summary=""><tbody><tr><td><p class="notep1">関連項目:</p><p>日時データ型およびタイム・ゾーン・サポートの詳細は、<a href="olink:NLSPG-GUID-7A1BA319-767A-43CC-A579-4DAC7063B243" target="_blank"><span><cite>Oracle Databaseグローバリゼーション・サポート・ガイド</cite></span></a>を参照</p>
</td></tr></tbody></table><br /></div></div>
<div class="section"><p class="subhead1">ODBCデータ型TIMESTAMP_STRUCTの変数を使用したこれらのタイム・ゾーン列からのデータのフェッチ</p><p>次の例では、ODBCデータ型<code class="codeph">TIMESTAMP_STRUCT</code>の変数を使用して<code class="codeph">TIMESTAMP WITH TIME ZONE</code>および<code class="codeph">TIMESTAMP WITH LOCAL TIME ZONE</code>列からデータをフェッチする方法を示します。</p>
</div>
<!-- class="section" -->
<div class="example" id="GUID-2FEED4F9-9AB8-4CA8-8AA5-C4F2ED862F8E__GUID-8BE12ADC-CC84-40F5-9F45-5C55F46E484A"><a id="GUID-8BE12ADC-CC84-40F5-9F45-5C55F46E484A" name="GUID-8BE12ADC-CC84-40F5-9F45-5C55F46E484A"></a><p class="titleinexample">例: ODBCデータ型TIMESTAMP_STRUCTの変数を使用してTIMESTAMP WITH TIME ZONEおよびTIMESTAMP WITH LOCAL TIME ZONE列からデータをフェッチする方法</p><pre class="oac_no_warn" dir="ltr">int main()
{
...
...
/* TSTAB table's DDL statement:
* ---------------------------
* CREATE TABLE TSTAB (COL_TSTZ TIMESTAMP WITH TIME ZONE,
* COL_TSLTZ TIMESTAMP WITH LOCAL TIME ZONE);
*
* Insert statement:
* ----------------
* Sample #1:
* ---------
* INSERT INTO TSTAB VALUES (TIMESTAMP '2010-03-13 03:47:30.123456 America/Los_Angeles'
* TIMESTAMP '2010-04-14 04:47:30.123456 America/Los_Angeles');
*
* Sample #2:
* ---------
* INSERT INTO TSTAB VALUES ('22-NOV-1963 12:30:00.000000 PM',
* '24-NOV-1974 02:30:00.000000 PM');
*
* Refer Oracle Database documentations to know more details about TIMESTAMP
* WITH TIME ZONE and TIMESTAMP WITH LOCAL TIME ZONE columns.
*/
SQLCHAR sqlSelQuery[] = "SELECT COL_TSTZ, COL_TSLTZ FROM TSTAB";
TIMESTAMP_STRUCT timestampcol1;
TIMESTAMP_STRUCT timestampcol2;
...
...
/* Allocate the ODBC statement handle. */
SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
/* Execute the statement sqlSelQuery. */
SQLExecDirect(hstmt, sqlSelQuery, SQL_NTS);
/* Bind the variable to read the value from the TIMESTAMP WITH TIME ZONE column. */
SQLBindCol(hstmt, 1, SQL_C_TIMESTAMP, &timestampcol1, sizeof(timestampcol1), NULL);
/* Bind the variable to read the value from the TIMESTAMP WITH LOCAL TIME ZONE column. */
SQLBindCol(hstmt, 2, SQL_C_TIMESTAMP, &timestampcol2, sizeof(timestampcol2), NULL);
...
...
/* Fetch data from the TSTAB table. */
retcode = SQLFetch(hstmt);
/* Values of column COL_TSTZ and COL_TSLTZ are available in variables
* timestampcol1 and timestampcol2 respectively. Refer to Microsoft ODBC
* documentation for more information about data type TIMESTAMP_STRUCT. */
...
...
/* Close the statement. */
SQLFreeStmt(hstmt, SQL_CLOSE);
/* Free the statement handle. */
SQLFreeHandle(SQL_HANDLE_STMT, hstmt); ... ... }
</pre>
</div>
<!-- class="example" -->
<div class="example" id="GUID-2FEED4F9-9AB8-4CA8-8AA5-C4F2ED862F8E__GUID-C48F1D03-AF8E-4FC7-AA31-FD2E16BB3486"><a id="GUID-C48F1D03-AF8E-4FC7-AA31-FD2E16BB3486" name="GUID-C48F1D03-AF8E-4FC7-AA31-FD2E16BB3486"></a><p class="titleinexample">例: データをTIMESTAMP WITH TIME ZONEおよびTIMESTAMP WITH LOCAL TIME ZONE列に挿入する方法</p><pre class="oac_no_warn" dir="ltr">int main()
{
...
...
SQLCHAR sqlInsQuery[] = "INSERT INTO TSTAB VALUES (?, ?)";
TIMESTAMP_STRUCT timestampcol1;
TIMESTAMP_STRUCT timestampcol2;
...
...
/* Input the value for column COL_TSTZ in table TSTAB. */
timestampcol1.year = 2000;
timestampcol1.month = 1;
timestampcol1.day = 1;
timestampcol1.hour = 0;
timestampcol1.minute = 0;
timestampcol1.second = 1;
timestampcol1.fraction = 1000;
/* Input the value for column COL_TSLTZ in table TSTAB. */
timestampcol1.year = 2012;
timestampcol1.month = 2;
timestampcol1.day = 5;
timestampcol1.hour = 10;
timestampcol1.minute = 30;
timestampcol1.second = 10;
timestampcol1.fraction = 1000;
...
...
/* Allocate the ODBC statement handle. */
SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
...
...
/* Bind the input value for column COL_TSTZ. */
SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_TIMESTAMP, SQL_TIMESTAMP,
0, 0, &timestampcol1, sizeof(timestampcol1), NULL);
/* Bind the input value for column COL_TSLTZ. */
SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_TIMESTAMP, SQL_TIMESTAMP,
0, 0, &timestampcol2, sizeof(timestampcol2), NULL);
...
...
/* Execute the statement sqlInsQuery. */
SQLExecDirect(hstmt, sqlInsQuery, SQL_NTS);
/* Close the statement. */
SQLFreeStmt(hstmt, SQL_CLOSE);
/* Free the statement handle. */
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
...
...
}</pre>
</div>
<!-- class="example" -->
</div>
</div>
<div class="sect3"><!-- infolevel="all" infotype="General" --><a name="GUID-47E39A2A-B3D2-4C61-891B-AD37B7E654C7" id="GUID-47E39A2A-B3D2-4C61-891B-AD37B7E654C7"></a><h3 id="SQORA-GUID-47E39A2A-B3D2-4C61-891B-AD37B7E654C7" class="sect3">Oracleクライアント(OCI、SQL*Plus、Oracle ODBCドライバなど)のORA_SDTZの設定の効果について</h3>
<div><p>Oracleクライアントのシステム変数<code class="codeph">ORA_SDTZ</code>の設定の効果を説明します。</p>
<p>タイム・ゾーンは、システム変数<code class="codeph">ORA_SDTZ</code>で指示されます。</p>
<p>次の項では、Oracleクライアント(OCI、SQL*Plus、Oracle ODBC Driverなど)でシステム変数<code class="codeph">ORA_SDTZ</code>を設定しないおよび設定する効果について説明します。次の項の例は、インド(GMT+5:30)のタイム・ゾーンで実行されます。</p>
<div align="center"><div class="inftblnotealso" id="GUID-47E39A2A-B3D2-4C61-891B-AD37B7E654C7__NOTE-143-CB4BB65D"><a id="NOTE-143-CB4BB65D" name="NOTE-143-CB4BB65D"></a><br /><table cellpadding="3" cellspacing="0" class="NoteAlso oac_no_warn" summary=""><tbody><tr><td><p class="notep1">関連項目:</p><p>セッション・タイム・ゾーンの詳細は、<a href="http://docs.oracle.com/database/121/NLSPG/ch4datetime.htm#NLSPG263" target="_blank">Oracle Databaseグローバリゼーション・サポート・ガイド</a>を参照してください</p>
</td></tr></tbody></table><br /></div></div>
<div class="section"><p class="subhead1">環境設定</p><p>環境を設定するには、<code class="codeph">TSLTZ</code> (TIMESTAMP WITH LOCAL TIME ZONE)列を使用した次の表を作成し、次のように<code class="codeph">01/01/2016 00:00</code> GMTの値を<code class="codeph">TSLTZ</code>列に挿入します。</p>
</div>
<!-- class="section" -->
<div class="example" id="GUID-47E39A2A-B3D2-4C61-891B-AD37B7E654C7__GUID-AC360B64-605F-4A60-8AE5-07247EC0C731"><a id="GUID-AC360B64-605F-4A60-8AE5-07247EC0C731" name="GUID-AC360B64-605F-4A60-8AE5-07247EC0C731"></a><p class="titleinexample">例: 環境を設定する方法</p><p>次の例では、後続の例の項の環境を設定します。</p>
<pre class="oac_no_warn" dir="ltr">SQL> create table timezone_demo(col1 TIMESTAMP WITH LOCAL TIME ZONE);
Table created.
SQL> INSERT INTO TIMEZONE_DEMO VALUES(TIMESTAMP '2016-01-01 00:00:00.000000 ETC/GREENWICH');
1 row created.</pre>
</div>
<!-- class="example" -->
<div class="section"><p class="subhead1">ORA_SDTZが環境で設定されていない場合</p><p><code class="codeph">ORA_SDTZ</code>が環境で設定されていない場合、オペレーティング・システム(OS)・タイム・ゾーン設定がOracleクライアントのデフォルトのタイム・ゾーンとして取得されます。次に例を示します。</p>
</div>
<!-- class="section" -->
<div class="example" id="GUID-47E39A2A-B3D2-4C61-891B-AD37B7E654C7__GUID-725FDC21-411F-4B03-AD55-2A5207469906"><a id="GUID-725FDC21-411F-4B03-AD55-2A5207469906" name="GUID-725FDC21-411F-4B03-AD55-2A5207469906"></a><p class="titleinexample">例: ORA_SDTZが設定されていない場合に発生する内容</p><pre class="oac_no_warn" dir="ltr">C:\Users\example.ORADEV>set ORA_SDTZ=
C:\Users\example.ORADEV>sqlplus scott/<span class="italic">password</span>@//host01.example.com:1521/ORCL12C1
SQL*Plus: Release 12.1.0.2.0 Production on Fri Apr 22 12:03:52 2016
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Last Successful login time: Fri Apr 22 2016 11:47:12 +05:30
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> select sessiontimezone from dual;
SESSIONTIMEZONE
---------------------------------------------------------------------------
+05:30
SQL> select * from timezone_demo;
COL1
---------------------------------------------------------------------------
01-JAN-16 05.30.00.000000 AM</pre>
</div>
<!-- class="example" -->
<div class="section"><p class="subhead1">環境でのオペレーティング・システム(OS)・タイムゾーンへのORA_SDTZの設定</p><p><code class="codeph">ORA_SDTZ</code>がオペレーティング・システム(OS)・タイム・ゾーンに設定されている場合、Oracleクライアントのユーザー・セッションはOSタイム・ゾーン設定に設定されます。環境で設定を解除するか、<code class="codeph">ORA_SDTZ</code>を<code class="codeph">OS_TZ</code>に設定できます。次に例を示します。</p>
</div>
<!-- class="section" -->
<div class="example" id="GUID-47E39A2A-B3D2-4C61-891B-AD37B7E654C7__GUID-FADC6CF1-30D2-483A-9381-C4DFD53D0441"><a id="GUID-FADC6CF1-30D2-483A-9381-C4DFD53D0441" name="GUID-FADC6CF1-30D2-483A-9381-C4DFD53D0441"></a><p class="titleinexample">例: ORA_SDTZがオペレーティング・システム(OS)・タイムゾーンに設定されている場合に発生する内容</p><pre class="oac_no_warn" dir="ltr">C:\Users\example.ORADEV>set ORA_SDTZ=OS_TZ
C:\Users\example.ORADEV>sqlplus scott/<span class="italic">password</span>@//host01.example.com:1521/ORCL12C1
SQL*Plus: Release 12.1.0.2.0 Production on Fri Apr 22 11:42:36 2016
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Last Successful login time: Fri Apr 22 2016 11:42:09 +05:30
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> select sessiontimezone from dual;
SESSIONTIMEZONE
---------------------------------------------------------------------------
+05:30
SQL> select * from timezone_demo;
COL1
---------------------------------------------------------------------------
01-JAN-16 05.30.00.000000 AM</pre>
</div>
<!-- class="example" -->
<div class="section"><p class="subhead1">環境での特定のタイム・ゾーンへのORA_SDTZの設定</p><div class="p">Oracleクライアントを設定して特定のタイム・ゾーン(たとえば、ヘルシンキのタイム・ゾーンなど)に調整されたタイム・スタンプ値を取得できます。これを実行するには、 <pre class="oac_no_warn" dir="ltr">ORA_SDTZ</pre>
対応するタイム・ゾーンのOracleタイム・ゾーン・リージョン名(ヘルシンキのタイム・ゾーンのOracleタイム・ゾーン・リージョン名は<code class="codeph">Europe/Helsinki</code>です)に設定できます。次に例を示します。</div>
</div>
<!-- class="section" -->
<div class="example" id="GUID-47E39A2A-B3D2-4C61-891B-AD37B7E654C7__GUID-3ACC3E76-2A33-47A0-B069-7AB3A23607E0"><a id="GUID-3ACC3E76-2A33-47A0-B069-7AB3A23607E0" name="GUID-3ACC3E76-2A33-47A0-B069-7AB3A23607E0"></a><p class="titleinexample">例: ORA_SDTZが特定のタイム・ゾーンに設定されている場合に発生する内容</p><pre class="oac_no_warn" dir="ltr">C:\Users\example.ORADEV>set ORA_SDTZ=Europe/Helsinki
C:\Users\example.ORADEV>sqlplus scott/<span class="italic">password</span>@//host01.example.com:1521/ORCL12C1
SQL*Plus: Release 12.1.0.2.0 Production on Fri Apr 22 11:47:10 2016
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Last Successful login time: Fri Apr 22 2016 09:16:18 EUROPE/HELSINKI EEST
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> select sessiontimezone from dual;
SESSIONTIMEZONE
---------------------------------------------------------------------------
Europe/Helsinki
SQL> select * from timezone_demo;
COL1
---------------------------------------------------------------------------
01-JAN-16 02.00.00.000000 AM</pre>
</div>
<!-- class="example" -->
</div>
</div>
<a id="ADFNS991"></a><a id="ADFNS1197"></a>
<div class="sect3"><!-- infolevel="all" infotype="General" --><a name="GUID-3BA665DB-9B1B-4219-A236-2B2585DE3986" id="GUID-3BA665DB-9B1B-4219-A236-2B2585DE3986"></a><h3 id="SQORA-GUID-3BA665DB-9B1B-4219-A236-2B2585DE3986" class="sect3">サポートされる機能</h3>
<div><div class="section"><p class="subhead1">トピック:</p></div>
<!-- class="section" -->
<div class="section"><ul style="list-style-type: disc;"><li><p><a href="#GUID-32A9C4C1-2CE2-4533-8C46-3095DCF361B9">API準拠</a></p>
</li>
<li><p><a href="#GUID-37A82452-DE02-4E07-9071-520549D23552">ODBC API関数の実装</a></p>
</li>
<li><p><a href="#GUID-F6D578E0-CF3C-42CA-AD55-155E591DD74A">ODBC SQL構文の実装</a></p>
</li>
<li><p><a href="#GUID-BAA07D62-A7F4-4A1B-B73F-86751A32EBDC">データ型の実装(プログラミング)</a></p>
</li>
</ul>
</div>
<!-- class="section" -->
</div>
</div>
<a id="ADFNS1199"></a><a id="ADFNS1200"></a><a id="ADFNS1198"></a>
<div class="sect4"><!-- infolevel="all" infotype="General" --><a name="GUID-32A9C4C1-2CE2-4533-8C46-3095DCF361B9" id="GUID-32A9C4C1-2CE2-4533-8C46-3095DCF361B9"></a><h4 id="SQORA-GUID-32A9C4C1-2CE2-4533-8C46-3095DCF361B9" class="sect4">API準拠</h4>
<div><div class="section"><p>Oracle ODBC Driverのリリース9.2.0.0.0以降では、すべてのコア、レベル2およびレベル1関数をサポートしています。</p>
<p>また、Oracle ODBC Driverのリリース9.2.0.0.0以降では、変換DLLをサポートしています。</p>
<p>次のトピックでは、Oracle ODBC Driverで実装されているODBC API関数について説明します。</p>
<div align="center"><div class="inftblnotealso" id="GUID-32A9C4C1-2CE2-4533-8C46-3095DCF361B9__GUID-C137430D-7E3B-4B33-960C-8F86D6C62739"><a id="GUID-C137430D-7E3B-4B33-960C-8F86D6C62739" name="GUID-C137430D-7E3B-4B33-960C-8F86D6C62739"></a><br /><table cellpadding="3" cellspacing="0" class="NoteAlso oac_no_warn" summary=""><tbody><tr><td><p class="notep1">関連項目:</p><ul style="list-style-type: disc;"><li><p>上級ユーザーは、<a href="#GUID-60D6F0A0-D043-4CA2-A360-5604A9BF2B73">「エラー・メッセージ」</a>を参照してください</p>
</li>
<li><p>プログラマは、<a href="#GUID-37A82452-DE02-4E07-9071-520549D23552">「ODBC API関数の実装」</a>を参照してください</p>
</li>
</ul>
</td></tr></tbody></table><br /></div></div>
</div>
<!-- class="section" -->
</div>
</div>
<a id="ADFNS1213"></a><a id="ADFNS1212"></a>
<div class="sect4"><!-- infolevel="all" infotype="General" --><a name="GUID-37A82452-DE02-4E07-9071-520549D23552" id="GUID-37A82452-DE02-4E07-9071-520549D23552"></a><h4 id="SQORA-GUID-37A82452-DE02-4E07-9071-520549D23552" class="sect4">ODBC API関数の実装</h4>
<div><p>次の表は、Oracle ODBC Driverが関数を実装する方法を示したものです。</p>
<div class="tblformal" id="GUID-37A82452-DE02-4E07-9071-520549D23552__BABIIHAC">
<a id="BABIIHAC" name="BABIIHAC"></a><p class="titleintable">表: Oracle ODBC Driverで特定の関数を実装する方法</p>
<table border="1" cellpadding="4" cellspacing="0" class="Formal" frame="hsides" rules="rows" summary="この表は、Oracle ODBC Driverが関数を実装する方法を示したものです。" title="Oracle ODBC Driverで特定の関数を実装する方法" width="100%"><thead><tr align="left" valign="top"><th align="left" valign="bottom" width="31%" id="d8096e35">関数</th>
<th align="left" valign="bottom" width="69%" id="d8096e38">説明</th>
</tr>
</thead>
<tbody><tr align="left" valign="top"><td align="left" valign="top" width="31%" id="d8096e43" headers="d8096e35 "><p><code class="codeph">SQLConnect</code></p>
</td>
<td align="left" valign="top" width="69%" headers="d8096e43 d8096e38 "><p>SQLConnectには、DBQ、ユーザーIDおよびパスワードのみが必要です。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="31%" id="d8096e51" headers="d8096e35 "><p><code class="codeph">SQLDriverConnect</code></p>
</td>
<td align="left" valign="top" width="69%" headers="d8096e51 d8096e38 "><p>SQLDriverConnectは、DSN、DBQ、UIDおよびPWDキーワードを使用します。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="31%" id="d8096e59" headers="d8096e35 "><p><code class="codeph">SQLMoreResults</code></p>
</td>
<td align="left" valign="top" width="69%" headers="d8096e59 d8096e38 "><p>暗黙的結果のODBCサポートを実装します。これは、Oracle Database 12<span class="italic">c</span>リリース1 (12.1.0.1)で実装された新しいAPIです。詳細は、<a href="unilink:sql_more_results_function" target="_blank">SQLMoreResults関数</a>を参照してください。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="31%" id="d8096e74" headers="d8096e35 "><p><code class="codeph">SQLSpecialColumns</code></p>
</td>
<td align="left" valign="top" width="69%" headers="d8096e74 d8096e38 "><p><code class="codeph">SQLSpecialColumns</code>は、<code class="codeph">SQL_BEST_ROWID</code>属性を指定してコールされると、常にROWID列を戻します。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="31%" id="d8096e88" headers="d8096e35 "><p><code class="codeph">SQLProcedures</code>および<code class="codeph">SQLProcedureColumns</code></p>
</td>
<td align="left" valign="top" width="69%" headers="d8096e88 d8096e38 "><p>次の項を参照してください。</p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="31%" id="d8096e99" headers="d8096e35 "><p>すべてのカタログ関数</p>
</td>
<td align="left" valign="top" width="69%" headers="d8096e99 d8096e38 "><p><code class="codeph">SQL_ATTR_METADATA_ID</code>文属性が<code class="codeph">SQL_TRUE</code>である場合、文字列引数は識別引数として扱われ、大/小文字の区別はされません。この場合は、アンダースコア("_")やパーセント記号("%")は実際の文字として扱われ、検索文字列として見なされません。この属性が<code class="codeph">SQL_FALSE</code>である場合、通常の引数またはパターン値の引数となり文字どおりに扱われ、大/小文字は区別されます。</p>
</td>
</tr>
</tbody>
</table>
</div>
<!-- class="inftblhruleinformal" -->
</div>
</div>
<a id="ADFNS1214"></a>
<div class="sect4"><!-- infolevel="all" infotype="General" --><a name="GUID-F6D578E0-CF3C-42CA-AD55-155E591DD74A" id="GUID-F6D578E0-CF3C-42CA-AD55-155E591DD74A"></a><h4 id="SQORA-GUID-F6D578E0-CF3C-42CA-AD55-155E591DD74A" class="sect4">ODBC SQL構文の実装</h4>
<div><p>比較の述語に比較の第2式としてパラメータ・マーカーがあり、そのパラメータの値が<code class="codeph">SQLBindParameter</code>によって<code class="codeph">SQL_NULL_DATA</code>に設定されている場合、比較は失敗します。これはODBC SQLのNULL述語構文と一致しています。</p>
</div>
</div>
<a id="ADFNS1215"></a>
<div class="sect4"><!-- infolevel="all" infotype="General" --><a name="GUID-BAA07D62-A7F4-4A1B-B73F-86751A32EBDC" id="GUID-BAA07D62-A7F4-4A1B-B73F-86751A32EBDC"></a><h4 id="SQORA-GUID-BAA07D62-A7F4-4A1B-B73F-86751A32EBDC" class="sect4">データ型の実装(プログラミング)</h4>
<div><p>プログラマにとって特に注意が必要なのは、<code class="codeph">CHAR</code>、<code class="codeph">VARCHAR</code>および<code class="codeph">VARCHAR2</code>データ型の実装です。</p>
<p><code class="codeph">SQLGetTypeInfo</code>は、<code class="codeph">SQL_VARCHAR</code>の<code class="codeph">fSqlType</code>値に対し、Oracleデータベース・データ型である<code class="codeph">VARCHAR2</code>を戻します。また、<code class="codeph">SQLGetTypeInfo</code>は、<code class="codeph">SQL_CHAR</code>のfSqlType値に対しては、Oracleデータベース・データ型である<code class="codeph">CHAR</code>を戻します。</p>
</div>
</div>
<a id="ADFNS992"></a><a id="ADFNS1216"></a>
<div class="sect3"><!-- infolevel="all" infotype="General" --><a name="GUID-5C81EEFC-CF1C-47D9-927B-48AA4BAA1781" id="GUID-5C81EEFC-CF1C-47D9-927B-48AA4BAA1781"></a><h3 id="SQORA-GUID-5C81EEFC-CF1C-47D9-927B-48AA4BAA1781" class="sect3">Unicodeサポート</h3>
<div><div class="section"><p class="subhead1">トピック:</p></div>
<!-- class="section" -->
<div class="section"><ul style="list-style-type: disc;"><li><p><a href="#GUID-C29E5DEA-FCDF-4392-B35F-38E214085C15">ODBC環境内のUnicodeサポート</a></p>
</li>
<li><p><a href="#GUID-AF2B2B2E-D4B5-4CEF-A865-2148A411DCD1">ODBC API内でのUnicodeサポート</a></p>
</li>
<li><p><a href="#GUID-0CF23B0B-1BD1-45EF-9C15-C61534F28230">ドライバ・マネージャのUnicode機能</a></p>
</li>
<li><p><a href="#GUID-52D0EBAB-2EA1-482D-89E3-026435D4D675">SQLGetDataのパフォーマンス</a></p>
</li>
<li><p><a href="#GUID-E1D5BAD9-BA73-4DB3-81ED-192240385702">Unicodeの例</a></p>
</li>
</ul>
</div>
<!-- class="section" -->
</div>
</div>
<a id="ADFNS1217"></a>
<div class="sect4"><!-- infolevel="all" infotype="General" --><a name="GUID-C29E5DEA-FCDF-4392-B35F-38E214085C15" id="GUID-C29E5DEA-FCDF-4392-B35F-38E214085C15"></a><h4 id="SQORA-GUID-C29E5DEA-FCDF-4392-B35F-38E214085C15" class="sect4">ODBC環境内のUnicodeサポート</h4>
<div><p>MicrosoftまたはunixODBC ODBCドライバ・マネージャ(ドライバ・マネージャ)によって、Unicodeをサポートしているかどうかに関係なく、すべてのODBCドライバがUnicode対応しているように動作します。これにより、下位のODBCドライバでUnicodeが使用可能かどうかに依存せずに、ODBCアプリケーションを作成することができます。</p>
<p>ドライバ・マネージャがANSI ODBCドライバ用にUnicodeサポートをエミュレートできるのは、Unicodeデータとローカル・コード・ページとの間の変換に限られています。ドライバ・マネージャがUnicodeからローカル・コード・ページに変換するとき、データが失われる可能性があります。完全なUnicodeサポートは、ODBCドライバがUnicodeをサポートしないかぎり不可能です。Oracle ODBC DriverはUnicodeをフル・サポートしています。</p>
</div>
</div>
<a id="ADFNS1219"></a><a id="ADFNS1218"></a>
<div class="sect4"><!-- infolevel="all" infotype="General" --><a name="GUID-AF2B2B2E-D4B5-4CEF-A865-2148A411DCD1" id="GUID-AF2B2B2E-D4B5-4CEF-A865-2148A411DCD1"></a><h4 id="SQORA-GUID-AF2B2B2E-D4B5-4CEF-A865-2148A411DCD1" class="sect4">ODBC API内でのUnicodeサポート</h4>
<div><p>ODBC APIは、"W"と"A"という決まった接尾辞によって、UnicodeおよびANSIエントリ・ポイントの両方をサポートします。ODBCアプリケーションの開発者は、明示的に接尾辞によってエントリ・ポイントをコールする必要はありません。UNICODEおよび_UNICODEプリプロセッサ定義を指定して、ODBCアプリケーションをコンパイルすると、適切な関数コールを行います。たとえば、<code class="codeph">SQLPrepare</code>コールは<code class="codeph">SQLPrepareW</code>としてコンパイルされます。</p>
<p>アプリケーションが入力パラメータをUnicodeでエンコードするように指定したり、列データをUnicodeで返すように要求できるようにするために、Cデータ型である<code class="codeph">SQL_C_WCHAR</code>がODBCインタフェースに追加されました。<code class="codeph">SQL_C_TCHAR</code>マクロはUnicodeとANSIの両方でビルドする必要のあるアプリケーションに便利です。<code class="codeph">SQL_C_TCHAR</code>マクロは、Unicodeアプリケーションの場合は<code class="codeph">SQL_C_WCHAR</code>にコンパイルされ、ANSIアプリケーションの場合は<code class="codeph">SQL_C_CHAR</code>にコンパイルされます。</p>
<p>SQLデータ型の<code class="codeph">SQL_WCHAR</code>、<code class="codeph">SQL_WVARCHAR</code>および<code class="codeph">SQL_WLONGVARCHAR</code>は、表内でUnicodeと定義されている列を表すために、ODBCインタフェースに追加されています。これらの値は、<code class="codeph">SQLDescribeCol</code>、<code class="codeph">SQLColAttribute</code>、<code class="codeph">SQLColumns</code>および<code class="codeph">SQLProcedureColumns</code>コールから返されます。</p>
<p>Unicodeエンコードは、SQL列型<code class="codeph">NCHAR</code>、<code class="codeph">NVARCHAR2</code>および<code class="codeph">NCLOB</code>についてサポートされています。また、SQL列型<code class="codeph">CHAR</code>および<code class="codeph">VARCHAR2</code>についても、キャラクタ・セマンティクスが列定義で指定されている場合は、Unicodeエンコードがサポートされます。</p>
<p>Oracle ODBC DriverはこれらのSQL列型をサポートしており、これらをODBC SQLデータ型にマップします。</p>
<p>次の表に、サポートされるSQLデータ型および対応するODBC SQLデータ型を示します。</p>
<div class="tblformal" id="GUID-AF2B2B2E-D4B5-4CEF-A865-2148A411DCD1__BABJAEBG">
<a id="BABJAEBG" name="BABJAEBG"></a><p class="titleintable">表: サポートされるSQLデータ型および対応するODBC SQLデータ型</p>
<table border="1" cellpadding="4" cellspacing="0" class="Formal" frame="hsides" rules="rows" summary="この表では、サポートされるSQLデータ型および対応するODBC Driverデータ型を示しています。" title="サポートされるSQLデータ型および対応するODBC SQLデータ型" width="100%"><thead><tr align="left" valign="top"><th align="left" valign="bottom" width="31%" id="d8557e103">SQLデータ型</th>
<th align="left" valign="bottom" width="69%" id="d8557e106">ODBC SQLデータ型</th>
</tr>
</thead>
<tbody><tr align="left" valign="top"><td align="left" valign="top" width="31%" id="d8557e111" headers="d8557e103 "><p><code class="codeph">CHAR</code></p>
</td>
<td align="left" valign="top" width="69%" headers="d8557e111 d8557e106 "><p><code class="codeph">SQL_CHAR</code>または<code class="codeph">SQL_WCHAR</code> <a href="#fn_1" id="fn_1" name="fn_1" onclick="footdisplay(1, "CHAR maps to SQL_WCHAR if the character semantics were specified in the column definition and if the character set for the database is Unicode. ")"><sup>脚注1</sup></a></p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="31%" id="d8557e132" headers="d8557e103 "><p><code class="codeph">VARCHAR2</code></p>
</td>
<td align="left" valign="top" width="69%" headers="d8557e132 d8557e106 "><p><code class="codeph">SQL_VARCHAR</code>または<code class="codeph">SQL_WVARCHAR</code> <a href="#fn_2" id="fn_2" name="fn_2" onclick="footdisplay(2, "VARCHAR2 maps to SQL_WVARCHAR if the character semantics were specified in the column definition and if the character set for the database is Unicode. ")"><sup>脚注2</sup></a></p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="31%" id="d8557e153" headers="d8557e103 "><p><code class="codeph">NCHAR</code></p>
</td>
<td align="left" valign="top" width="69%" headers="d8557e153 d8557e106 "><p><code class="codeph">SQL_WCHAR</code></p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="31%" id="d8557e162" headers="d8557e103 "><p><code class="codeph">NVARCHAR2</code></p>
</td>
<td align="left" valign="top" width="69%" headers="d8557e162 d8557e106 "><p><code class="codeph">SQL_WVARCHAR</code></p>
</td>
</tr>
<tr align="left" valign="top"><td align="left" valign="top" width="31%" id="d8557e171" headers="d8557e103 "><p><code class="codeph">NCLOB</code></p>
</td>
<td align="left" valign="top" width="69%" headers="d8557e171 d8557e106 "><p><code class="codeph">SQL_WLONGVARCHAR</code></p>
</td>
</tr>
</tbody>
</table>
</div>
<!-- class="inftblhruleinformal" -->
<p class="tablefootnote"><sup class="tablefootnote">脚注1 </sup><p>キャラクタ・セマンティクスが列定義で指定されている場合およびデータベースのキャラクタセットがUnicodeの場合、<code class="codeph">CHAR</code>は<code class="codeph">SQL_WCHAR</code>にマップされます。 </p>
</p><p class="tablefootnote"><sup class="tablefootnote">脚注2 </sup><p>キャラクタ・セマンティクスが列定義で指定されている場合およびデータベースのキャラクタセットがUnicodeの場合、<code class="codeph">VARCHAR2</code>は<code class="codeph">SQL_WVARCHAR</code>にマップされます。</p>
</p></div>
</div>
<a id="ADFNS1220"></a>
<div class="sect4"><!-- infolevel="all" infotype="General" --><a name="GUID-0CF23B0B-1BD1-45EF-9C15-C61534F28230" id="GUID-0CF23B0B-1BD1-45EF-9C15-C61534F28230"></a><h4 id="SQORA-GUID-0CF23B0B-1BD1-45EF-9C15-C61534F28230" class="sect4">ドライバ・マネージャのUnicode機能</h4>
<div><p>ドライバ・マネージャは、ODBCドライバがUnicodeをサポートしていないことを検出すると、次を実行します。</p>
<ul style="list-style-type: disc;"><li><p>ANSI ODBCドライバをコールする前にUnicode用関数コールをANSI用関数コールに変換します。文字列引数はUnicodeからローカル・コード・ページに変換されます。たとえば、<code class="codeph">SQLPrepareW</code>コールは<code class="codeph">SQLPrepare</code>コールに変換されます。SQL文パラメータの文字列はUnicodeからローカル・コード・ページに変換されます。</p>
</li>
<li><p>文字データのリターン・パラメータを、ローカル・コード・ページからUnicodeに変換します。たとえば、<code class="codeph">SQLColAttribute</code>を使用して列名を戻す場合です。</p>
</li>
<li><p><code class="codeph">SQL_C_WCHAR</code>でバインドされた列に対し、データをローカル・コード・ページからUnicodeコード・ページに変換します。</p>
</li>
<li><p><code class="codeph">SQL_C_WCHAR</code>でバインドされた入力パラメータに対し、データをUnicodeからローカル・コード・ページに変換します。</p>
</li>
</ul>
</div>
</div>
<a id="ADFNS1221"></a>
<div class="sect4"><!-- infolevel="all" infotype="General" --><a name="GUID-52D0EBAB-2EA1-482D-89E3-026435D4D675" id="GUID-52D0EBAB-2EA1-482D-89E3-026435D4D675"></a><h4 id="SQORA-GUID-52D0EBAB-2EA1-482D-89E3-026435D4D675" class="sect4">SQLGetDataのパフォーマンス</h4>
<div><p><code class="codeph">SQLGetData</code>関数を使用すると、ODBCアプリケーションは、データのフェッチ後に、受け取る列のデータ型を指定できます。OCIでは、Oracle ODBC Driverがフェッチ前にデータ型を指定する必要があります。OCIの場合、Oracle ODBC Driverは、データベース内で定義されている列のデータ型の情報を使用し、OCI経由で列データをフェッチする最適な方法を決定します。</p>
<p>文字データを持つ列が<code class="codeph">SQLBindCol</code>でバインドされていない場合、Oracle ODBC Driverは列をフェッチするためにUnicodeなのかローカル・コード・ページなのか決定する必要があります。ドライバは、デフォルトとして列をUnicodeで受け取ることが可能ですが、結果として不要な変換を2回行うことになります。たとえば、データベースでデータがANSIでエンコードされている場合、Oracle ODBC Driverにデータを送る際にANSIからUnicodeへ変換されるとします。ODBCアプリケーションが<code class="codeph">SQL_C_CHAR</code>としてデータを要求すると、元のエンコーディングに戻すために、さらに変換が行われることになります。</p>
<p>データのフェッチでは、Oracleクライアントのデフォルトのエンコーディングが使用されます。しかし、ODBCアプリケーションは、<code class="codeph">WCHAR</code>データ型として列またはパラメータをバインドすることにより、このデフォルトを上書きして、Unicodeとしてデータをフェッチする場合があります。</p>
</div>
</div>
<a id="ADFNS1223"></a><a id="ADFNS1224"></a><a id="ADFNS1225"></a><a id="ADFNS1226"></a><a id="ADFNS1227"></a><a id="ADFNS1222"></a>
<div class="sect4"><!-- infolevel="all" infotype="General" --><a name="GUID-E1D5BAD9-BA73-4DB3-81ED-192240385702" id="GUID-E1D5BAD9-BA73-4DB3-81ED-192240385702"></a><h4 id="SQORA-GUID-E1D5BAD9-BA73-4DB3-81ED-192240385702" class="sect4">Unicodeの例</h4>
<div><div class="section"><p>Oracle ODBC Driver自体がTCHARマクロを使用しているので、これを利用するために、ユーザーのODBCアプリケーション・プログラムではTCHARを使用することをお薦めします。</p>
<p>次のプログラムではTCHARの使用方法を示します。TCHARは<code class="codeph">UNICODE</code>および<code class="codeph">_UNICODE</code>を指定してコンパイルする場合は、<code class="codeph">WCHAR</code>データ型になります。</p>
</div>
<!-- class="section" -->
<div class="section"><ul style="list-style-type: disc;"><li><p><a href="#GUID-E1D5BAD9-BA73-4DB3-81ED-192240385702__BABHJIII">例1 データベースへの接続</a></p>
</li>
<li><p><a href="#GUID-E1D5BAD9-BA73-4DB3-81ED-192240385702__BABEDAGC">例2 単純なデータ取出し</a></p>
</li>
<li><p><a href="#GUID-E1D5BAD9-BA73-4DB3-81ED-192240385702__BABDCEJH">例3 SQLGetDataを使用したデータ取出し(フェッチ後のバインド)</a></p>
</li>
<li><p><a href="#GUID-E1D5BAD9-BA73-4DB3-81ED-192240385702__BABCJHID">例4 単純なデータ更新</a></p>
</li>
<li><p><a href="#GUID-E1D5BAD9-BA73-4DB3-81ED-192240385702__BABJAAJH">例5 LONGデータ(CLOB)の更新と取出し</a></p>
</li>
</ul>
</div>
<!-- class="section" -->
<div class="section" id="GUID-E1D5BAD9-BA73-4DB3-81ED-192240385702__BABHJIII"><a id="BABHJIII" name="BABHJIII"></a><p class="subhead1">例1 データベースへの接続</p></div>
<!-- class="section" -->
<div class="section"><p><code class="codeph">SQLConnect</code>に対してUnicodeリテラルを使用する以外、他との違いはありません。</p>
<pre class="oac_no_warn" dir="ltr">SQLHENV envHnd;
SQLHDBC conHnd;
SQLHSTMT stmtHnd;
RETCODE rc;
rc = SQL_SUCCESS;
// ENV is allocated
rc = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &envHnd);
// Connection Handle is allocated
rc = SQLAllocHandle(SQL_HANDLE_DBC, envHnd, &conHnd);
rc = SQLConnect(conHnd, _T("stpc19"), SQL_NTS, _T("scott"), SQL_NTS, _T("tiger"),
SQL_NTS);
.
.
.
if (conHnd)
{
SQLDisconnect(conHnd);
SQLFreeHandle(SQL_HANDLE_DBC, conHnd);
}
if (envHnd)
SQLFreeHandle(SQL_HANDLE_ENV, envHnd);</pre>
</div>
<!-- class="section" -->
<div class="section" id="GUID-E1D5BAD9-BA73-4DB3-81ED-192240385702__BABEDAGC"><a id="BABEDAGC" name="BABEDAGC"></a><p class="subhead1">例2 単純なデータ取出し</p></div>
<!-- class="section" -->
<div class="section"><p>次の例では、従業員名と職種を<code class="codeph">EMP</code>表から取り出します。TCHAR対応のデータを各ODBC関数に指定する必要がある以外、ANSIの場合との違いはありません。Unicodeアプリケーションの場合は、<code class="codeph">SQLBindCol</code>をコールするときにバッファの長さを<code class="codeph">BYTE</code>長で指定する必要があります(例: <code class="codeph">sizeof(ename)</code>)。</p>
<pre class="oac_no_warn" dir="ltr">/*
** Execute SQL, bind columns, and Fetch.
** Procedure:
**
** SQLExecDirect
** SQLBindCol
** SQLFetch
**
*/
static SQLTCHAR *sqlStmt = _T("SELECT ename, job FROM emp");
SQLTCHAR ename[50];
SQLTCHAR job[50];
SQLINTEGER enamelen, joblen;
_tprintf(_T("Retrieve ENAME and JOB using SQLBindCol 1.../n[%s]/n"), sqlStmt);
/* Step 1: Prepare and Execute */
rc = SQLExecDirect(stmtHnd, sqlStmt, SQL_NTS); /* select */
checkSQLErr(envHnd, conHnd, stmtHnd, rc);
/* Step 2: Bind Columns */
rc = SQLBindCol(stmtHnd, 1, SQL_C_TCHAR, ename, sizeof(ename), &enamelen);
checkSQLErr(envHnd, conHnd, stmtHnd, rc);
rc = SQLBindCol(stmtHnd, 2, SQL_C_TCHAR, job, sizeof(job), &joblen);
checkSQLErr(envHnd, conHnd, stmtHnd, rc);
do
{
/* Step 3: Fetch Data */
rc = SQLFetch(stmtHnd);
if (rc == SQL_NO_DATA)
break;
checkSQLErr(envHnd, conHnd, stmtHnd, rc);
_tprintf(_T("ENAME = %s, JOB = %s/n"), ename, job);
} while (1);
_tprintf(_T("Finished Retrieval/n/n"));</pre>
</div>
<!-- class="section" -->
<div class="section" id="GUID-E1D5BAD9-BA73-4DB3-81ED-192240385702__BABDCEJH"><a id="BABDCEJH" name="BABDCEJH"></a><p class="subhead1">例3 SQLGetDataを使用したデータ取出し(フェッチ後のバインド)</p></div>
<!-- class="section" -->
<div class="section"><p>この例では、<code class="codeph">SQLGetData</code>の使用方法を説明します。ODBCプログラミングに精通していない場合は、OCIプログラムの場合と異なり、<code class="codeph">SQLGetData</code>を使用することで、データをバインドする前にフェッチすることが可能です。Unicode固有の点に関しては、ANSIアプリケーションとの違いはありません。</p>
<pre class="oac_no_warn" dir="ltr">/*
** Execute SQL, bind columns, and Fetch.
** Procedure:
**
** SQLExecDirect
** SQLFetch
** SQLGetData
*/
static SQLTCHAR *sqlStmt = _T("SELECT ename,job FROM emp"); // same as Case 1.
SQLTCHAR ename[50];
SQLTCHAR job[50];
_tprintf(_T("Retrieve ENAME and JOB using SQLGetData.../n[%s]/n"), sqlStmt);
if (rc != SQL_SUCCESS)
{
_tprintf(_T("Failed to allocate STMT/n"));
goto exit2;
}
/* Step 1: Prepare and Execute */
rc = SQLExecDirect(stmtHnd, sqlStmt, SQL_NTS); // select
checkSQLErr(envHnd, conHnd, stmtHnd, rc);
do
{
/* Step 2: Fetch */
rc = SQLFetch(stmtHnd);
if (rc == SQL_NO_DATA)
break;
checkSQLErr(envHnd, conHnd, stmtHnd, rc);
/* Step 3: GetData */
rc = SQLGetData(stmtHnd, 1, SQL_C_TCHAR, (SQLPOINTER)ename, sizeof(ename), NULL);
checkSQLErr(envHnd, conHnd, stmtHnd, rc);
rc = SQLGetData(stmtHnd, 2, SQL_C_TCHAR, (SQLPOINTER)job, sizeof(job), NULL);
checkSQLErr(envHnd, conHnd, stmtHnd, rc);
_tprintf(_T("ENAME = %s, JOB = %s/n"), ename, job);
} while (1);
_tprintf(_T("Finished Retrieval/n/n"));</pre>
</div>
<!-- class="section" -->
<div class="section" id="GUID-E1D5BAD9-BA73-4DB3-81ED-192240385702__BABCJHID"><a id="BABCJHID" name="BABCJHID"></a><p class="subhead1">例4 単純なデータ更新</p></div>
<!-- class="section" -->
<div class="section"><p>この例では、データ更新の方法を説明します。同様に、<code class="codeph">SQLBindParameter</code>に対するデータ長は、Unicodeアプリケーションの場合でも<code class="codeph">BYTE</code>長で指定します。</p>
<pre class="oac_no_warn" dir="ltr">/
*
** Execute SQL, bind columns, and Fetch.
** Procedure:
**
** SQLPrepare
** SQLBindParameter
** SQLExecute
*/
static SQLTCHAR *sqlStmt = _T("INSERT INTO emp(empno,ename,job) VALUES(?,?,?)");
static SQLTCHAR *empno = _T("9876"); // Emp No
static SQLTCHAR *ename = _T("ORACLE"); // Name
static SQLTCHAR *job = _T("PRESIDENT"); // Job
_tprintf(_T("Insert User ORACLE using SQLBindParameter.../n[%s]/n"), sqlStmt);
/* Step 1: Prepare */
rc = SQLPrepare(stmtHnd, sqlStmt, SQL_NTS);
checkSQLErr(envHnd, conHnd, stmtHnd, rc);
/* Step 2: Bind Parameter */
rc = SQLBindParameter(stmtHnd, 1, SQL_PARAM_INPUT, SQL_C_TCHAR, SQL_DECIMAL,4, 0, (SQLPOINTER)empno, 0, NULL);
checkSQLErr(envHnd, conHnd, stmtHnd, rc);
rc = SQLBindParameter(stmtHnd, 2, SQL_PARAM_INPUT, SQL_C_TCHAR, SQL_CHAR, lstrlen(ename)*sizeof(TCHAR), 0, (SQLPOINTER)ename, lstrlen(ename)*sizeof(TCHAR), NULL);
checkSQLErr(envHnd, conHnd, stmtHnd, rc);
rc = SQLBindParameter(stmtHnd, 3, SQL_PARAM_INPUT, SQL_C_TCHAR, SQL_CHAR, lstrlen(job)*sizeof(TCHAR), 0, (SQLPOINTER)job, lstrlen(job)*sizeof(TCHAR), NULL);
checkSQLErr(envHnd, conHnd, stmtHnd, rc);
/* Step 3: Execute */
rc = SQLExecute(stmtHnd);
checkSQLErr(envHnd, conHnd, stmtHnd, rc);</pre>
</div>
<!-- class="section" -->
<div class="section" id="GUID-E1D5BAD9-BA73-4DB3-81ED-192240385702__BABJAAJH"><a id="BABJAAJH" name="BABJAAJH"></a><p class="subhead1">例5 LONGデータ(CLOB)の更新と取出し</p></div>
<!-- class="section" -->
<div class="section"><p>この例は、Oracleの<code class="codeph">CLOB</code>のような大きなデータの更新と取出しをする、最も複雑な場合の例です。データ長は<code class="codeph">BYTE</code>長である必要があるため、<code class="codeph">BYTE</code>長を導出するには<code class="codeph">strlen(TCHAR data)*sizeof(TCHAR)</code>が必要です。</p>
<pre class="oac_no_warn" dir="ltr">/*
** Execute SQL, bind columns, and Fetch.
** Procedure:
**
** SQLPrepare
** SQLBindParameter
** SQLExecute
** SQLParamData
** SQLPutData
**
** SQLExecDirect
** SQLFetch
** SQLGetData
*/
static SQLTCHAR *sqlStmt1 = _T("INSERT INTO clobtbl(clob1) VALUES(?)");
static SQLTCHAR *sqlStmt2 = _T("SELECT clob1 FROM clobtbl");
SQLTCHAR clobdata[1001];
SQLTCHAR resultdata[1001];
SQLINTEGER ind = SQL_DATA_AT_EXEC;
SQLTCHAR *bufp;
SQLTCHAR ch;
int clobdatalen, chunksize, dtsize, retchklen, i, len;
_tprintf(_T("Insert CLOB1 using SQLPutData.../n[%s]/n"), sqlStmt1);
/* Set CLOB Data *
for (i=0, ch=_T('A'); i< sizeof(clobdata)/sizeof(SQLTCHAR); ++i, ++ch)
{
if (ch > _T('Z'))
ch = _T('A');
clobdata[i] = ch;
}
clobdata[sizeof(clobdata)/sizeof(SQLTCHAR)-1] = _T('/0');
clobdatalen = lstrlen(clobdata);
chunksize = clobdatalen / 7;
/* Step 1: Prepare */
rc = SQLPrepare(stmtHnd, sqlStmt1, SQL_NTS);
checkSQLErr(envHnd, conHnd, stmtHnd, rc);
/* Step 2: Bind Parameter with SQL_DATA_AT_EXEC */
rc = SQLBindParameter(stmtHnd, 1, SQL_PARAM_INPUT, SQL_C_TCHAR, SQL_LONGVARCHAR, clobdatalen*sizeof(TCHAR), 0, (SQLPOINTER)clobdata, clobdatalen*sizeof(TCHAR), &ind);
checkSQLErr(envHnd, conHnd, stmtHnd, rc);
/* Step 3: Execute */
rc = SQLExecute(stmtHnd);
checkSQLErr(envHnd, conHnd, stmtHnd, rc);
sdhamoth: Continuation:
/* Step 4: ParamData (initiation) */
rc = SQLParamData(stmtHnd, (SQLPOINTER*)&bufp);
checkSQLErr(envHnd, conHnd, stmtHnd, rc);
for (dtsize=0, bufp = clobdata; dtsize < clobdatalen; dtsize += chunksize, bufp += chunksize)
{
if (dtsize+chunksize<clobdatalen)
len = chunksize;
else
len = clobdatalen-dtsize;
/* Step 5: PutData */
rc = SQLPutData(stmtHnd, (SQLPOINTER)bufp, len*sizeof(TCHAR));
checkSQLErr(envHnd, conHnd, stmtHnd, rc);
}
/* Step 6: ParamData (termination) */
rc = SQLParamData(stmtHnd, (SQLPOINTER*)&bufp);
checkSQLErr(envHnd, conHnd, stmtHnd, rc);
rc = SQLFreeStmt(stmtHnd, SQL_CLOSE);
_tprintf(_T("Finished Update/n/n"));
rc = SQLAllocStmt(conHnd, &stmtHnd);
if (rc != SQL_SUCCESS)
{
_tprintf(_T("Failed to allocate STMT/n"));
goto exit2;
}
/* Clear Result Data */
memset(resultdata, 0, sizeof(resultdata));
chunksize = clobdatalen / 15; /* 15 times to put */
/* Step 1: Prepare */
rc = SQLExecDirect(stmtHnd, sqlStmt2, SQL_NTS); /* select */
checkSQLErr(envHnd, conHnd, stmtHnd, rc);
/* Step 2: Fetch */
rc = SQLFetch(stmtHnd);
checkSQLErr(envHnd, conHnd, stmtHnd, rc);
for(dtsize=0, bufp = resultdata; dtsize < sizeof(resultdata)/sizeof(TCHAR) && rc != SQL_NO_DATA; dtsize += chunksize-1, bufp += chunksize-1)
{
if (dtsize+chunksize<sizeof(resultdata)/sizeof(TCHAR))
len = chunksize;
else
len = sizeof(resultdata)/sizeof(TCHAR)-dtsize;
/* Step 3: GetData */
rc = SQLGetData(stmtHnd, 1, SQL_C_TCHAR, (SQLPOINTER)bufp, len*sizeof(TCHAR), &retchklen);
}
if (!_tcscmp(resultdata, clobdata))
{
_tprintf(_T("Succeeded!!/n/n"));
}
else
{
_tprintf(_T("Failed!!/n/n"));
}</pre>
</div>
<!-- class="section" -->
</div>
</div>
<a id="ADFNS997"></a><a id="ADFNS1228"></a>
<div class="sect3"><!-- infolevel="all" infotype="General" --><a name="GUID-1150CB70-B2F5-46F8-82EA-61FF38804B31" id="GUID-1150CB70-B2F5-46F8-82EA-61FF38804B31"></a><h3 id="SQORA-GUID-1150CB70-B2F5-46F8-82EA-61FF38804B31" class="sect3">パフォーマンスおよびチューニング</h3>
<div><div class="section"><p class="subhead1">トピック:</p></div>
<!-- class="section" -->
<div class="section"><ul style="list-style-type: disc;"><li><p><a href="#GUID-FE6D7303-D2F6-4EE2-B058-BAFF7FA82FE5">一般的なODBCプログラミングのヒント</a></p>
</li>
<li><p><a href="#GUID-F99DC4BD-4B46-4BAC-B9C1-A6306D0529DA">データソース構成オプション</a></p>
</li>
<li><p><a href="#GUID-F08F34BC-F987-4F07-ADD9-EFA4705BD423">DATEデータ型およびTIMESTAMPデータ型</a></p>
</li>
</ul>
</div>
<!-- class="section" -->
</div>
</div>
<a id="ADFNS1229"></a>
<div class="sect4"><!-- infolevel="all" infotype="General" --><a name="GUID-FE6D7303-D2F6-4EE2-B058-BAFF7FA82FE5" id="GUID-FE6D7303-D2F6-4EE2-B058-BAFF7FA82FE5"></a><h4 id="SQORA-GUID-FE6D7303-D2F6-4EE2-B058-BAFF7FA82FE5" class="sect4">一般的なODBCプログラミングのヒント</h4>
<div><p>この項では、ODBCアプリケーションのパフォーマンスを向上させるためのいくつかの一般的なプログラミングのヒントを記述しています。</p>
<ul style="list-style-type: disc;"><li><p>アプリケーションがデータソースからの接続および切断を頻繁に繰り返す場合、接続のプーリングを有効にします。再接続する場合に比べ、プールされた接続を使用する方がはるかに効果的です。</p>
</li>
<li><p>文を処理する回数を最小限にします。可能であれば、バインド・パラメータを使用して異なるパラメータ値に文を再使用できるようにします。<code class="codeph">SQLExecute</code>ごとに文を処理するのに比べ、一度文を処理して数回実行する方がはるかに効果的です。</p>
</li>
<li><p>アプリケーションで取得しないことを認識している場合に<code class="codeph">SELECT</code>文に列を含めないでください(特に<code class="codeph">LONG</code>列)。データベース・サーバー・プロトコルの性質上、アプリケーションが列をバインドする場合、または<code class="codeph">SQLGetData</code>をバインドする場合のいずれの場合も、<code class="codeph">LONG</code>列が<code class="codeph">SELECT</code>文に含まれている場合は、ODBCドライバはLONG列全体の内容をフェッチする必要があります。</p>
</li>
<li><p>データソースを更新しないトランザクションを実行中の場合は、ODBC <code class="codeph">SQLSetConnectAttr</code>関数の<code class="codeph">SQL_ATTR_ACCESS_MODE</code>属性を<code class="codeph">SQL_MODE_READ_ONLY</code>に設定します。</p>
</li>
<li><p>ODBCのエスケープ句を使用していない場合は、ODBC <code class="codeph">SQLSetConnectAttr</code>関数またはODBC <code class="codeph">SQLSetStmtAttr</code>関数の<code class="codeph">SQL_ATTR_NOSCAN</code>属性をTRUEに設定します。</p>
</li>
<li><p>非常に多くの行がある表からデータを取り出すには、ODBC <code class="codeph">SQLFetch</code>関数のかわりにODBC <code class="codeph">SQLFetchScroll</code>関数を使用します。</p>
</li>
<li><p>同じSQL文が複数回使用される場合には、OCI文キャッシュを有効にします(<code class="codeph">StatementCache=T</code>)。</p>
</li>
<li><p><code class="codeph">NUMBER</code>列を<code class="codeph">FLOAT</code>としてバインドすると問合せの実行が高速になります(<code class="codeph">BindAsFLOAT=T</code>)。</p>
</li>
<li><p><code class="codeph">LONG</code>または<code class="codeph">LONG RAW</code>のフェッチ中に、<code class="codeph">MaxLargeData=<value></code>に設定するとパフォーマンスが最適化されます。</p>
</li>
<li><p><code class="codeph">Ref Cursor</code>を戻す小さなパッケージ・プロシージャに対して大量のコールが行われるアプリケーションで<code class="codeph">UseOCIDescribeAny=T</code>と設定すると、パフォーマンスが向上します。</p>
</li>
</ul>
</div>
</div>
<a id="ADFNS998"></a><a id="ADFNS1231"></a><a id="ADFNS1232"></a><a id="ADFNS1233"></a><a id="ADFNS1234"></a><a id="ADFNS1235"></a><a id="ADFNS1236"></a><a id="ADFNS1230"></a>
<div class="sect4"><!-- infolevel="all" infotype="General" --><a name="GUID-F99DC4BD-4B46-4BAC-B9C1-A6306D0529DA" id="GUID-F99DC4BD-4B46-4BAC-B9C1-A6306D0529DA"></a><h4 id="SQORA-GUID-F99DC4BD-4B46-4BAC-B9C1-A6306D0529DA" class="sect4">データソース構成オプション</h4>
<div><p>このトピックでは、次のODBCデータソース構成オプションのパフォーマンスに関連する事項を説明します。</p>
<div class="section"><p class="subhead1">トピック:</p></div>
<!-- class="section" -->
<div class="section"><ul style="list-style-type: disc;"><li><p><a href="#GUID-F99DC4BD-4B46-4BAC-B9C1-A6306D0529DA__BABICDCG">結果セットの有効化</a></p>
</li>
<li><p><a href="#GUID-F99DC4BD-4B46-4BAC-B9C1-A6306D0529DA__BABGGIBJ">LOBの有効化</a></p>
</li>
<li><p><a href="#GUID-F99DC4BD-4B46-4BAC-B9C1-A6306D0529DA__BABJDGJB">TIMESTAMPをDATEとしてバインド</a></p>
</li>
<li><p><a href="#GUID-F99DC4BD-4B46-4BAC-B9C1-A6306D0529DA__BABBBGDG">カーソル・クローズの有効化</a></p>
</li>
<li><p><a href="#GUID-F99DC4BD-4B46-4BAC-B9C1-A6306D0529DA__BABFGFCH">スレッド・セーフティの有効化</a></p>
</li>
<li><p><a href="#GUID-F99DC4BD-4B46-4BAC-B9C1-A6306D0529DA__BABCHCIA">フェッチ・バッファ・サイズ</a></p>
</li>
</ul>
</div>
<!-- class="section" -->
<div class="section" id="GUID-F99DC4BD-4B46-4BAC-B9C1-A6306D0529DA__BABICDCG"><a id="BABICDCG" name="BABICDCG"></a><p class="subhead1">結果セットの有効化</p></div>
<!-- class="section" -->
<div class="section"><p>このオプションは、プロシージャ・コールからの結果セット(たとえば、<code class="codeph">RefCursor</code>)の戻しのサポートを有効にします。デフォルトでは結果セットが戻されます。</p>
<p>ODBCドライバは、<code class="codeph">RefCursor</code>パラメータが含まれる場合、プロシージャのパラメータ・セットおよびそれらのデータ型を判断するために、データベース・サーバーへ問い合せる必要があります。プロシージャが最初に処理および実行される際、この問合せが追加のネットワーク・ラウンド・トリップを発生させます。</p>
</div>
<!-- class="section" -->
<div class="section" id="GUID-F99DC4BD-4B46-4BAC-B9C1-A6306D0529DA__BABGGIBJ"><a id="BABGGIBJ" name="BABGGIBJ"></a><p class="subhead1">LOBの有効化</p></div>
<!-- class="section" -->
<div class="section"><p>このオプションは、LOBの挿入および更新を有効にします。デフォルトは有効です。</p>
<p>ODBCドライバは、LOBのパラメータが存在するか判断するため、<code class="codeph">INSERT</code>文または<code class="codeph">UPDATE</code>文でパラメータのデータ型をデータベース・サーバーに問い合せる必要があります。<code class="codeph">INSERT</code>または<code class="codeph">UPDATE</code>文が最初に処理および実行される際、この問合せが追加のネットワーク・ラウンド・トリップを発生させます。</p>
</div>
<!-- class="section" -->
<div class="section" id="GUID-F99DC4BD-4B46-4BAC-B9C1-A6306D0529DA__BABJDGJB"><a id="BABJDGJB" name="BABJDGJB"></a><p class="subhead1">TIMESTAMPをDATEとしてバインド</p></div>
<!-- class="section" -->
<div class="section"><p><code class="codeph">SQL_TIMESTAMP</code>パラメータを適切なOracleデータ型でバインドします。このオプションが<code class="codeph">TRUE</code>である場合、<code class="codeph">SQL_TIMESTAMP</code>はOracleの<code class="codeph">DATE</code>データ型でバインドされます。このオプションが<code class="codeph">FALSE</code>である場合、<code class="codeph">SQL_TIMESTAMP</code>はOracleの<code class="codeph">TIMESTAMP</code>データ型でバインドされます(デフォルト)。</p>
</div>
<!-- class="section" -->
<div class="section" id="GUID-F99DC4BD-4B46-4BAC-B9C1-A6306D0529DA__BABBBGDG"><a id="BABBBGDG" name="BABBBGDG"></a><p class="subhead1">カーソル・クローズの有効化</p></div>
<!-- class="section" -->
<div class="section"><p>ODBC関数の<code class="codeph">SQL_CLOSE</code>オプション(<code class="codeph">SQLFreeStmt</code>)は、文に関連するカーソルをクローズし、すべての未使用の結果を破棄すると想定されています。アプリケーションは、<code class="codeph">SQLPrepare</code>なしで文を再実行しカーソルを再開させることができます。この通常のシナリオはしばらく休止状態のアプリケーションですが、同じSQL文を再利用します。アプリケーションが休止状態の場合に、関連するサーバー・リソースを使用可能にする場合があります。</p>
<p>Oracle ODBC Driverが階層化されているOracle Call Interface(OCI)は、カーソル・クローズ機能をサポートしていません。デフォルトでは、<code class="codeph">SQL_CLOSE</code>オプションはOracle ODBC Driverには影響がありません。カーソルおよび関連のリソースは、データベース・サーバー上にオープンされた状態で存在します。</p>
<p>このオプションを有効に設定した場合、データベース・サーバー上の関連カーソルをクローズさせることができます。ただし、解析済のSQL文は破棄されてしまいます。ODBCアプリケーションは、<code class="codeph">SQLPrepare</code>コールなしで再び文を実行することができます。ただし、実際にはODBCドライバは文を解析してからすべて実行することになります。このオプションを有効にした場合、一度文を解析し、それを繰り返して実行するアプリケーションのパフォーマンスには重大な影響があります。</p>
<p>サーバーの関連リソースを解放することが確実に必要である場合のみ、このオプションを有効にします。</p>
</div>
<!-- class="section" -->
<div class="section" id="GUID-F99DC4BD-4B46-4BAC-B9C1-A6306D0529DA__BABFGFCH"><a id="BABFGFCH" name="BABFGFCH"></a><p class="subhead1">スレッド・セーフティの有効化</p></div>
<!-- class="section" -->
<div class="section"><p>アプリケーションがシングル・スレッドの場合、このオプションを無効にできます。デフォルトでは、ODBCドライバは、すべての内部構造(環境、接続、文)へのアクセスがスレッド・セーフティであることを保証しています。シングル・スレッドのアプリケーションは、このオプションを無効にすることにより、スレッド・セーフティのオーバーヘッドの一部を回避できます。通常このオプションを無効にすることにより、多少のパフォーマンスの改善がみられます。</p>
</div>
<!-- class="section" -->
<div class="section" id="GUID-F99DC4BD-4B46-4BAC-B9C1-A6306D0529DA__BABCHCIA"><a id="BABCHCIA" name="BABCHCIA"></a><p class="subhead1">フェッチ・バッファ・サイズ</p></div>
<!-- class="section" -->
<div class="section"><p><a href="#GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A">「Oracle ODBCドライバ構成」ダイアログ・ボックス</a>の<a href="#GUID-567FA71B-6DD8-434D-BEFC-B75ADB04411A__BABFJIJI">「Oracle」オプション</a>・タブの「フェッチ・バッファ・サイズ」をバイト単位で設定します。この値は、単一の問合せでアプリケーション・プログラムがリクエストする行数に関係なく、ODBCドライバがOracleデータベースからクライアントのキャッシュに一度にプリフェッチしてパフォーマンスを向上させるデータの行数を決定します。</p>
<p>通常一度に20行未満をフェッチするアプリケーションでは、低速なネットワーク接続上で動作する場合や非常に負荷の高いサーバーにアクセスする場合には特に、レスポンス時間が向上します。これを大きく設定しすぎると、レスポンス時間が悪化したり、メモリーを大量に消費したりすることがあります。デフォルトは64,000バイトです。アプリケーションに最適な値を選択します。</p>
<div align="center"><div class="inftblnote" id="GUID-F99DC4BD-4B46-4BAC-B9C1-A6306D0529DA__GUID-DEF4D947-884D-4AAB-AA86-8469886786E5"><a id="GUID-DEF4D947-884D-4AAB-AA86-8469886786E5" name="GUID-DEF4D947-884D-4AAB-AA86-8469886786E5"></a><br /><table cellpadding="3" cellspacing="0" class="Note oac_no_warn" summary=""><tbody><tr><td><p class="notep1">注意:</p><p><code class="codeph">LONG</code>およびLOBデータ型がある場合、ODBCドライバのプリフェッチ行数は、フェッチ・バッファ・サイズに依存しません。<code class="codeph">LONG</code>およびLOBデータ型では、パフォーマンスの改善が見込めず、過度のメモリー消費を引き起こす可能性があります。ODBCドライバは、<code class="codeph">LONG</code>およびLOBデータ型が含まれる場合、フェッチ・バッファ・サイズを無視し、プリフェッチ行数を使用します。</p>
</td></tr></tbody></table><br /></div></div>
</div>
<!-- class="section" -->
</div>
</div>
<a id="ADFNS1238"></a><a id="ADFNS1237"></a>
<div class="sect4"><!-- infolevel="all" infotype="General" --><a name="GUID-F08F34BC-F987-4F07-ADD9-EFA4705BD423" id="GUID-F08F34BC-F987-4F07-ADD9-EFA4705BD423"></a><h4 id="SQORA-GUID-F08F34BC-F987-4F07-ADD9-EFA4705BD423" class="sect4">DATEデータ型およびTIMESTAMPデータ型</h4>
<div><p>索引を含む<code class="codeph">DATE</code>列を<code class="codeph">WHERE</code>句で使用すると、データベースのパフォーマンスに影響する場合があります。次に例を示します。</p>
<pre class="oac_no_warn" dir="ltr">SELECT * FROM EMP WHERE HIREDATE = ?
</pre>
<p>この例では<code class="codeph">HIREDATE</code>列の索引を使用して、瞬時に問合せを実行できます。ただし、<code class="codeph">HIREDATE</code>は実際には<code class="codeph">DATE</code>値であり、ODBCドライバにより<code class="codeph">TIMESTAMP</code>のパラメータ値が提供されるため、Oracleサーバーの問合せオプティマイザには変換機能を適用する必要があります。誤った結果(パラメータ値にゼロ以外の小数秒が含まれる場合に起こる可能性があります)を回避するには、オプティマイザで<code class="codeph">HIREDATE</code>列への変換を適用し、次の文で終わるようにします。</p>
<pre class="oac_no_warn" dir="ltr">SELECT * FROM EMP WHERE TO_TIMESTAMP(HIREDATE) = ?
</pre>
<p>残念ながら、これにより<code class="codeph">HIREDATE</code>列の索引の使用は無効になり、かわりにサーバーによる表のスキャンが順次実行されます。表に多くの列が含まれる場合、これには時間がかかります。この状況を回避するため、ODBCドライバには<code class="codeph">「TIMESTAMPをDATEとしてバインド」</code>接続オプションが用意されています。このオプションが有効になっている場合、<code class="codeph">SQL_TIMESTAMP</code>パラメータはODBCドライバによりOracleの<code class="codeph">TIMESTAMP</code>データ型ではなく<code class="codeph">DATE</code>データ型でバインドされます。これにより、問合せオプティマイザで<code class="codeph">DATE</code>列の索引が使用できるようになります。</p>
<div align="center"><div class="inftblnote" id="GUID-F08F34BC-F987-4F07-ADD9-EFA4705BD423__GUID-02615890-9FE2-4A13-80D2-9E60BD3F85B0"><a id="GUID-02615890-9FE2-4A13-80D2-9E60BD3F85B0" name="GUID-02615890-9FE2-4A13-80D2-9E60BD3F85B0"></a><br /><table cellpadding="3" cellspacing="0" class="Note oac_no_warn" summary=""><tbody><tr><td><p class="notep1">注意:</p><p>このオプションは、<code class="codeph">DATE</code>列を<code class="codeph">TIMESTAMP</code>列としてバインドするMicrosoft Accessや、その他同種のプログラムでの使用のみを目的としています。実際に<code class="codeph">TIMESTAMP</code>列が存在する場合、またはデータの喪失が起こりうる場合、このオプションを使用しないでください。Microsoft Accessでは、主キーとして選択されたあらゆる列を使用して、このような問合せが実行されています。</p>
</td></tr></tbody></table><br /></div></div>
<div align="center"><div class="inftblnotealso" id="GUID-F08F34BC-F987-4F07-ADD9-EFA4705BD423__ImplementationOfDataTypesAdvanced-34584CF8"><a id="ImplementationOfDataTypesAdvanced-34584CF8" name="ImplementationOfDataTypesAdvanced-34584CF8"></a><br /><table cellpadding="3" cellspacing="0" class="NoteAlso oac_no_warn" summary=""><tbody><tr><td><p class="notep1">関連項目:</p><p><a href="#GUID-5D453F03-059F-469E-902C-82AB3695F40B">データ型の実装</a></p>
</td></tr></tbody></table><br /></div></div>
</div>
</div>
<div class="sect2"><!-- infolevel="all" infotype="General" --><a name="GUID-E409CC44-9A8F-4043-82C8-6B95CD939296" id="GUID-E409CC44-9A8F-4043-82C8-6B95CD939296"></a><h2 id="SQORA-GUID-E409CC44-9A8F-4043-82C8-6B95CD939296" class="sect2">ドキュメントのアクセシビリティについて</h2>
<div><p></p>
<p>オラクル社のアクセシビリティへの取組みの詳細は、Oracle Accessibility ProgramのWebサイト<a href="http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc" target="_blank">http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc</a>を参照してください。</p>
<div class="section" id="GUID-E409CC44-9A8F-4043-82C8-6B95CD939296__GUID-D88DC1A6-B2C8-4B61-85D2-23B0215F1664"><a id="GUID-D88DC1A6-B2C8-4B61-85D2-23B0215F1664" name="GUID-D88DC1A6-B2C8-4B61-85D2-23B0215F1664"></a><p class="subhead1">Oracleサポートへのアクセス</p><p>サポートをご契約のお客様には、My Oracle Supportを通して電子支援サービスを提供しています。詳細は、<a href="http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info" target="_blank">http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info</a>または<a href="http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs" target="_blank">http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs</a> (聴覚障害者向け)を参照してください。</p>
</div>
<!-- class="section" -->
</div>
</div>
</div>
<hr />
<div class="notices"><p><span>Oracle® Database</span> <span>ODBCドライバ・オンライン・ヘルプ</span>, <span>リリース2 (12.2.0.2.0)</span></p>
<p>E86138-01</p>
<p>Copyright © 1993, 2017, Oracle and/or its affiliates.All rights reserved.</p>
<div><div><p>このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。</p>
<p>ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。</p>
</div>
</div><div><div><p>このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。</p>
<p>U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.No other rights are granted to the U.S. Government.</p>
</div>
</div><div><div><p>このソフトウェアまたはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。</p>
</div>
</div><div><div><p>OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。</p>
<p>IntelおよびIntel XeonはIntel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。</p>
</div>
</div><div><div><p>このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。オラクル社およびその関連会社は、別途合意した場合を除き、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。</p>
</div>
</div></div>
</div>
<div class="footer"><hr /><table cellpadding="0" cellspacing="0" class="simple oac_no_warn" summary="" width="100%"><col width="33%" /><col width="*" /><col width="33%" /><tr><td valign="bottom"><table cellpadding="0" cellspacing="0" class="simple oac_no_warn" summary="" width="100"><col width="*" /><col width="48%" /><col width="48%" />
<td align="center"><a href="toc.htm"><br /><span class="icon">目次</span></a>
<tr><td> </td></tr></table></td><td class="copyrightlogo"><img alt="Oracleロゴ" class="copyrightlogo" src="oracle.gif" /><br /><span class="copyrightlogo">Copyright © 1993, 2017, Oracle and/or its affiliates. All rights reserved.</span><a href="cpyr.htm"><br /><span class="copyrightlogo">法律上の注意点</span></a></td><td valign="bottom" align="right"><table cellpadding="0" cellspacing="0" class="simple oac_no_warn" summary="" width="225"><tr><td> </td></tr></table></td></tr></table></div></body></html>
OHA YOOOO