Pro*C/C++

リリース・ノート

12c リリース2 (12.2)

E85248-03(原本部品番号:E85816-01)

2017年5月

このリリース・ノートについて

このドキュメントには、Pro*C/C++ 12c リリース2 (12.2)の重要な情報が記載されています。

次の項目が含まれます。

ドキュメントのアクセシビリティ

Oracleのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイトhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=docaccを参照してください。

Oracleサポートへのアクセス

お客様は、My Oracle Supportにアクセスして電子サポートを受けることができます。詳細は、http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info、聴覚に障害があるお客様はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=trsを参照してください。

互換性および移行の問題

この項では、以前のリリースのPro*C/C++から移行する際の互換性の問題について説明します。

32ビット実装と64ビット実装の間の互換性

32ビット実装と64ビット実装の両方をサポートするプラットフォームでは、64ビット・バイナリとリンクする前に、EXEC SQL INCLUDE文を介してsqlcaをインクルードするアプリケーションを再度プリコンパイルする必要があります。#includeプリプロセッサ文を介してsqlca.hをインクルードするアプリケーションの場合は、64ビット・バイナリと再リンクする前に再コンパイルして、64ビットのsqlca.hをインクルードする必要があります。

将来は、実装間で生成コードの互換性をサポートするために、32ビット・バイナリと64ビット・バイナリの両方をサポートするポートでは、1バージョン、つまり64ビット・バージョンのsqlca.hのみが提供される可能性があります。

Pro*C/C++構成ファイル

Pro*C/C++構成ファイルのprecomp/admin/pcscfg.cfgは、sys_includeオプションの適切なパスを使用して更新する必要があります。このパスは環境変数で指定できます(UNIXシステムの場合は$ORACLE_HOME、Windowsの場合は%ORACLE_HOME%など)。includeオプションも適切に更新する必要があります。

sys_include=($ORACLE_HOME/precomp/public,/usr/include)
<pre>sys_include=/usr/lib/gcc/i386-redhat-linux/4.1.1/include
<pre>include=($ORACLE_HOME/precomp/public)
<pre>include=$ORACLE_HOME/precomp/hdrs

LTYPE=SHORT

LTYPE=SHORTオプションを設定すると、.lisファイルの生成には、プログラム全体がリストされる公開形式ではなく詳細形式が使用されます。

Pro*C/C++ 12.2製品の新機能

この項では、Pro*C/C++ 12c リリース2 (12.2)に導入された新機能について簡単に説明します。

長い識別子のサポート

Pro*C/C++は、128バイトのオブジェクトの長さをサポートするようになりました。以前のリリースでは、オブジェクトの長さの制限は30バイトでした。

Oracle Instant Client - Basic Lightバージョンのサポート

Pro*C/C++でOracle Instant Client - Basic Lightバージョンをサポートするようになりました。

新しいコマンドライン・オプション

Pro*C/C++では新しいコマンドライン・オプションの"trim_password"が導入され、パスワード文字列に後続の空白が含まれることによる認証の問題を回避するようになりました。

Pro*C/C++のvc12との互換性

Pro*C/C++は、vc12 (Visual Studio 2013コンパイラ)との完全な互換性を備えるようになりました。

旧リリースの新機能

この項では、以前のリリースのPro*C/C++で導入された新機能を示します。

Pro*C/C++ 12.1製品版の機能

  • 自動増分列のサポート

  • 32Kの列のサポート

  • メモリー指定によるプリフェッチのサポート

  • SQL計画管理(SPM)のサポート

Pro*C/C++ 11.2製品版の機能

  • 8バイト整数のサポート

    Pro*C/C++では、C言語固有のlong long intデータ型がサポートされるようになりました。32ビットおよび64ビットのプラットフォームでは、最大18桁の整数を使用できます。

  • DECLARE CURSOR文のオプションのWITH HOLD句

    DECLARE CURSOR文の新しいWITH HOLD句では、COMMIT後オープンのまま維持するカーソルの保持を指定します。

Pro*C/C++ 11.1製品版の機能

  • SQL99構文のサポート: Pro*C/C++では、SELECT、INSERT、DELETEおよびUPDATE文のSQL99構文、およびDECLARE CURSOR文のカーソル本体がサポートされるようになりました。

  • array INSERTおよびarray SELECT構文の追加のサポート: Pro*C/C++では、DB2プリコンパイラのarray INSERTおよびarray SELECT構文がサポートされるようになりました。

  • 暗黙的なバッファINSERT: Pro*C/C++では、ループ内で実行された単一のINSERT文の暗黙的なバッファリングがサポートされるようになりました。

  • 動的SQL文のキャッシュ: 文のキャッシュによって動的SQL文のパフォーマンスが向上します。

  • 実行計画の修正: デプロイメント中のPro*C/C++アプリケーションのパフォーマンスを向上するために、データベースのアウトライン機能を使用して実行計画を修正できます。

修正された不具合

次の項では、Pro*C/C++で修正された不具合を説明します。説明の後にあるカッコ内の番号は、オラクル社のBugデータベース内のBug番号です。

Pro*C/C++リリース12.2製品で修正された不具合

  • Pro*C/C++は、timezone.pcファイルでcommon_parser=yesが設定されているときに、CSF-S-00000エラーをスローしなくなりました(9531787)

  • Pro*C/C++は、common_parser=yesが設定されているときにSelectリストでバインドが使用されていても、ORA-01008エラーをスローしなくなりました(14127422)

  • Pro*C/C++は、CASE句とTIMESTAMP関数が含まれているINSERT文に対するプリコンパイル時に、オプションUSERIDとcommon_parser=yesが指定されていても、ORA-932エラーをスローしなくなりました(14335958、19473788)

  • Pro*C/C++は、MODE=ANSIを指定していてSQLCODEを宣言していない場合のロールバック時に、SQLSTATEの設定に失敗しなくなりました(5891984)

  • Pro*C/C++は、PIC N変数に"SELECT INTO"文を使用しているときに、ORA-538976288エラーをスローしなくなりました(17189633)

  • Pro*C/C++は、レベル88で初期化された変数を含むプログラムのプリコンパイル時に、PCB-S-00400エラーをスローしなくなりました(20194289)

  • Pro*C/C++は、Solarisプラットフォーム固有のキーワード__threadの解析に失敗しなくなりました(20901503)

  • Oracle Instant ClientのPro*C/C++デモmakefileでは、ユーザーがGCCパスを指定できるようになりました(14591784)

  • Pro*C/C++は、long列からlong変数にデータをフェッチするときに、文字列を切り捨てなくなりました(13589112)

  • Pro*C/C++のNvarchar2オブジェクトは、nvarchar2データ型に正しくマップされるようになりました(11653552)

  • Pro*C/C++は、EXEC SQL OBJECT GET構文でのOCIRaw処理をサポートするようになりました(11653512)

  • Pro*C/C++には、OSDファイルのかわりに汎用のデモ・ファイルが付属するようになり、古い未使用のファイルは付属しなくなりました(9909411)

  • Pro*C/C++は、非常に長い数値の解析を処理するようになりました(9814506)

  • Pro*C/C++は、IS OF句でTYPEトークンを受け入れるようになりました(9535800)

  • Pro*C/C++は、SQL文の単一引用符間にある改行文字を正しく解釈するようになりました(9531904)

  • Pro*C/C++では、N'文字列'を含んでいるSQL文の処理時に発生していたメモリー破損の問題がなくなりました(9531638)

  • Pro*C/C++は、パーサー結合が有効化されているときに、CURSOR WITH HOLDオプションを認識するようになりました(8436316)

  • Pro*C/C++は、正しい「モード」パラメータ値をOCIStmtFetch2()に渡すようになりました(18509872)

  • Pro*C/C++は、列プロパティに割り当てられたメモリーを解放するようになりました(20051833)

  • Pro*C/C++は、表の削除時にORA-942エラーが発生した後で、ORA-1008エラーで停止しなくなりました(20029428)

  • Pro*C/C++は、統合パーサー・モードでCURSOR WITH HOLD構文を解析しているときに、PCC-S-2201エラーをスローしなくなりました(20534275)

  • Pro*C/C++は、common_parser=Noを指定したコンパイル時に、PLS-S-201エラーをスローしなくなりました(20808657)

  • Varchar構造体のLen属性が、行の一括フェッチ中に破損されなくなりました(14013076)

  • Pro*C/C++は、長いファイル名のプリコンパイル時に、セグメンテーション・フォルトをスローしなくなりました(12565588)

Pro*C/C++リリース12.1で修正された不具合

  • outlineおよびcommon_parserの両方をyesに設定してもPro*C/C++パーサーが失敗しなくなりました(12819524)

  • Pro*C/C++では、プリコンパイラ・オプションのcodeをkr_cに設定してもパブリックAPIのANSIプロトタイプが生成されなくなりました(10250555)

  • 11.2へのアップグレード後、XAアプリケーションがクラッシュしなくなりました(10086495)

  • Pro*C/C++デモ作成ファイルから、廃止されたSun SPARCコンパイラ・オプションのdalignが削除されました(9590964)

  • CHAR(5)のVARRARY(5)からのEXEC SQL COLLECTION GETが正しく動作するようになりました(9531014)

  • 64ビット・プラットフォームで、SQLSQLDAAlloc()から無効なディスクリプタ・ハンドルが返されなくなりました(9491931)

  • 11gへのアップグレード後、HP-UXでPro*C/C++がクラッシュしなくなりました(7365514)

Pro*C/C++リリース11.2で修正された不具合

  • Pro*C/C++では、マクロ定義(#defines)内のバックスラッシュ('\')文字を正しく解析できるようになりました(8539668)

  • Pro*C/C++では、ヘッダー・ファイルで使用する絶対ファイルパスが、Pro*C/C++を実行中のOSでサポートされているファイルパスの最大長までサポートされるようになりました(8308077)

  • Pro*C/C++では、出力ファイル・パスが128より長い場合、破損した出力ファイル名が生成されなくなりました。Pro*C/C++では、出力ファイルパスが、Pro*C/C++を実行中のOSでサポートされている長さまでサポートされるようになりました(8263988)

  • Pro*C/C++では、EXEC SQL …文の「CREATE SCHEMA … 」を使用した際に構文エラーのフラグが設定されなくなりました(7644340)

  • Pro*C/C++では、EXEC SQL …文の「CREATE TABLE … 」を使用した際に構文エラーのフラグが設定されなくなりました(7644376)

  • Pro*C/C++では、EXEC SQL …文の「CREATE VIEW … 」を使用した際に構文エラーのフラグが設定されなくなりました(7644400)

  • Pro*C/C++では、EXEC SQL …文の「CREATE VIWE … WITH CHECK OPTION」を使用した際に構文エラーのフラグが設定されなくなりました(7644435)

  • Pro*C/C++アプリケーションでは、前にCLOBの動的フェッチがあった場合、CHARZ変数は空白が埋め込まれて保持されるようになりました(7462575)

  • Pro*C/C++では、SQL文でNull値のキャラクタ・バッファをバインドし、次に同じバッファを使用してNull以外の文字列をバインドした場合、文字列が正しくバインドされるようになりました。Pro*C/C++では、バインドされたバッファの長さを再度更新する失敗がなくなり、Null文字列がバインドされているという想定はなくなりました。正しい行が表から取得されるようになりました(7395839)

  • 以前のリリースから11.1にアップグレードした後は、バインド・リストが再使用の試行時に解放されるため、Pro*C/C++アプリケーションがクラッシュしなくなりました(7308054)

  • Pro*Cでは、一部のプラットフォームでプリコンパイル中に診断ディレクティブの#WARNINGが発生した場合、エラーPCC-2014がスローされなくなりました(7252878、6669407、6154596)

  • Pro*C/C++では、絶対パスが指定されているときに、インクルード・ディレクトリのヘッダー・ファイルを直接開くことに失敗した場合、そのファイルを検索することがなくなり、エラーPCC-S-02016「挿入ファイルのパス名が長すぎます。」がレポートされなくなりました(7231977)

  • Linux x86-64の場合、Pro*C/C++は、SELECT INTOのホスト変数がodタイプのpid_tであった場合に停止しなくなりました(7018967)

  • セマンティクス解析は、TimesTenへの接続時に再コンパイルで失敗しなくなりました(6964328)

  • Pro*C/C++では、生成されたCコードのSQLヒントに余分な「+」記号が追加されなくなりました(6432583)

  • Pro*C/C++構成ファイルpcscfg.cfgに、sys_includeエントリに対する有効なパスが指定されるようになりました。コマンドライン・オプションの環境変数がサポートされるようになりました(5690971)

  • Pro*C/C++アプリケーションは、Oracle Technology Networkからbasic.zipをダウンロードして、インスタント・クライアント(IC)環境で実行できます。Pro*C/C++アプリケーションをICモードで開発するには、Oracle Universal Installer(OUI)を使用するメディアのインスタント・クライアント・インストール・オプションを使用して、必要なファイルをインストールする必要があります(5248663)

既知の不具合

次の項では、Pro*C/C++の既知の不具合を説明します。説明の後にあるカッコ内の番号は、オラクル社のBugデータベース内のBug番号です。

Pro*C/C++リリース12.2の既知の不具合

  • オンライン・モードで、XML表から値を選択する問合せを実行しているときに、ORA-00942エラーがスローされます(9535704)

  • マクロが含まれている埋込みSQL文を実行しているときに、PCC-S-2322エラーがスローされます(9970779)

  • stdbool.hファイルにc99準拠の問題があるため、PCC-S-02201がスローされます(12866048)

  • 複数パスのファイルが正しく組み込まれるように、GCC拡張機能#include_nextの実装を変更する必要があります(21414819)

  • 特定のDDL文が不適切に解析されます(20857434)

  • DDL文"CREATE GLOBAL TEMPORARY TABLE"の解析中に、PCC-S-02201エラーがスローされます(20857400)

  • DDL文"CREATE ROLE"の解析中に、PCC-S-02201エラーがスローされます(20857370)

  • Oracle Social Networkでは、パスワードに含まれる特殊文字"@"がサポートされません(20809065)

サポート

Pro*C/C++のサポートについては、地域のOracleサポート・サービス・センターにご連絡ください。


Pro*C/C++リリース・ノート, 12c リリース2 (12.2)

E85248-03

Copyright © 1996, 2017, Oracle and/or its affiliates. All rights reserved.

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

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.

このソフトウェアもしくはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。お客様との間に適切な契約が定められている場合を除いて、オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。お客様との間に適切な契約が定められている場合を除いて、オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。