この付録では、このリリースに含まれているサンプル・プログラムを使用して、Pro*C/C++でOracleデータベース・アプリケーションを作成する方法について説明します。
この付録の項目は、次のとおりです。
Pro*C/C++をインストールするときに、Oracle Universal Installerによって、Pro*C/C++の一連のサンプル・プログラムがORACLE_BASE\ORACLE_HOME
\precomp\demo\proc
ディレクトリにコピーされます。表G-1「サンプル・プログラム」に、これらのサンプル・プログラムの一覧を示し、後に続く項で説明します。
Oracleが提供するサンプル・プログラムでは、ビルド時に.exe
実行可能ファイルが生成されます。
表の「注意」列に示しているように、一部のサンプル・プログラムについては、プリコンパイルして実行する前に、サンプル・ディレクトリにあるSQLスクリプトを実行する必要があります。SQLスクリプトは、サンプル・プログラムが正常に実行されるよう、適切な表およびデータを設定します。これらのSQLスクリプトは、ORACLE_BASE
\
ORACLE_HOME
\precomp\demo\sql
ディレクトリにあります。
Pro*C/C++が正常にインストールされ、正しく動作することを検証するために、これらのサンプル・プログラムをビルドし、実行することをお薦めします。プログラムは、使用後に削除できます。
サンプル・プログラムは、pcmake.bat
というバッチ・ファイルか、Microsoft Visual Studioを使用してビルドできます。
表G-1 サンプル・プログラム
サンプル・プログラム | ソース・ファイル | Pro*C/C++ GUIプロジェクト・ファイル | MSVCコンパイラ・プロジェクト・ファイル | 注意 |
---|---|---|---|---|
|
|
|
- |
|
|
|
|
- |
|
|
|
|
|
|
|
|
|
|
- |
|
|
|
|
- |
|
|
|
- |
|
|
|
|
|
|
|
|
|
- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- |
|
|
|
|
- |
|
|
|
|
- |
|
|
|
|
- |
|
|
|
|
- |
|
|
|
|
- |
|
|
|
|
|
|
|
|
|
- |
|
|
|
|
- |
|
|
|
|
- |
|
|
|
|
|
|
|
|
|
- |
|
|
|
|
|
|
|
|
|
- |
|
|
|
|
|
- |
|
|
|
|
- |
|
|
|
- |
|
|
|
|
- |
次の各項では、サンプル・プログラムの機能について説明します。
実行時まで認識されないSQL文を、ANSI動的SQLを使用して処理する方法を示します。このプログラムは、ANSI動的SQLを使用するための最も簡単な(ただし、最も効率的というわけではない)方法を紹介することを目的としています。
実行時まで認識されないSQL文を、ANSI動的SQLを使用して処理する方法を示します。このプログラムでは、バッチ処理および参照セマンティクスでOracle拡張機能が使用されます。
カリフォルニア州の複数の郡についての人口調査情報をフェッチします。このプログラムでは、コレクション型データベース列によりナビゲートする様々な方法を示します。
接続プーリング機能の使用方法を示します。各種接続プーリング・オプションを使用して、パフォーマンスを最適化する方法も示します。
比較的複雑なSQL文のセットでの接続プーリング機能について示し、パフォーマンスの向上がプログラムで使用されるSQL文の種類によってどのように決まるかを示します。
ユーザーに従業員番号の入力を求め、その従業員の名前、給与および歩合をemp
表に問い合せます。このプログラムでは、インジケータ構造体内の標識変数を使用して、歩合がNULL
でないかどうかを判別します。
すべての営業担当者を検索し、その名前と総収入(歩合を含む)を出力します。このプログラムは、C++の継承の例です。
参照カーソルを宣言し、オープンします。
EMPCLASS
およびCPPDEMO2
ファイルは、C++フレームワーク内でのPro*C/C++プログラムを記述方法の例を示すためのものです。EMPCLASS
は、emp
表に対する特定の問合せをカプセル化したもので、カーソル変数を使用して実装されます。EMPCLASS
は、その問合せのインスタンスをインスタンス化し、emp
クラスに属するC++メンバー関数により、カーソル変数の機能(open
、fetch
、close
)を提供します。empclass.pc
ファイルは、スタンドアロンのデモ・プログラムではありません。このファイルは、cppdemo2
デモ・プログラムで使用するために作成されたものです。emp
クラスを使用するには、emp
クラスのインスタンスを宣言し、そのクラスのメンバー関数をコールするドライバ(cppdemo2.pc
)を作成する必要があります。
個人の社会保障番号に基づいて、データベースに対して犯罪記録のフェッチおよび追加を行います。このプログラムは、ラージ・オブジェクト(LOB)にアクセスして表に格納するメカニズム、およびDBMS_LOB
パッケージにより使用可能になるストアド・プロシージャでLOBを操作するメカニズムを示します。
スレッドをプリコンパイラとともに使用する方法を示します。このプログラムでは、スレッドと同じ数のセッションが作成されます。
オブジェクト・キャッシュ内のオブジェクトへのナビゲーショナル・アクセスを示します。
実行時に様々なパフォーマンス・パラメータを判断するためにORACAを使用する方法を示します。
埋込みPL/SQLブロックの使用方法を示します。このプログラムでは、データベースに登録されている従業員名の入力が要求されます。次に、PL/SQLブロックが実行され、4つのSELECT
文の結果が戻されます。
人事データベースに新しい従業員レコードを追加し、データベースの整合性をチェックします。データベース内の従業員番号には、現在の最大従業員番号+10の値が自動的に選択されます。
Oracleデータベースにログインし、ユーザーに従業員番号の入力を要求し、データベースにその従業員の名前、給与および歩合を問い合せて結果を表示します。ユーザーが従業員番号として0を入力するまでこの処理を続けます。
Oracleデータベースにログインし、カーソルを宣言してオープンし、すべての営業担当者の名前、給与および歩合をフェッチして結果を表示し、カーソルをクローズします。
Oracleデータベースにログインし、カーソルを宣言してオープンし、配列を使用して一括でフェッチし、print_rows()
関数を使用して結果を出力します。
LONG VARRAW
外部データ型を使用して、型同値化の使用方法を示します。
ユーザーに口座番号および引落し金額の入力を要求します。プログラムは、口座から金額を引き落す前に、口座番号が正しいことと、その金額を引き落せるだけの預金があることを確認します。このプログラムは、埋込みSQLの使用方法を示します。
scott/tiger
アカウントを使用して、Oracleデータベースに接続します。このプログラムでは、複数のホスト配列を宣言し、PL/SQLストアド・プロシージャ(CALLDEMO
パッケージのGET_EMPLOYEES
)をコールします。PL/SQLプロシージャは、ASIZE
値まで戻します。プログラムは、すべての行を取得するまでGET_EMPLOYEES
をコールし、毎回ASIZE
配列を取得して、値を出力し続けます。
ユーザー名とパスワードを使用してOracleデータベースに接続し、SQL文の入力を要求します。任意の有効なSQL文を入力できますが、埋込みSQLではなく、通常のSQL構文を使用する必要があります。入力した文は処理されます。文が問合せの場合、フェッチされた行が表示されます(動的SQL方法4)。
カーソル変数を使用して、emp
表からフェッチします。カーソルは、EMP_DEMO_PKG
パッケージ内のPL/SQLストアド・プロシージャopen_cur
でオープンされます。
動的SQL方法4を使用して配列フェッチを実行する方法を示します。
Oracle動的SQL方法4でスクロール可能カーソルを使用する方法を示します。スクロール可能カーソルは、ANSIの動的SQL方法4でも使用できます。
ホスト配列でスクロール可能カーソルを使用する方法を示します。
sqlvcp()
関数を使用してVARCHAR
構造体の実際のサイズを確認する方法を示します。サイズは、VARCHAR
の配列を移動するポインタを増やすためのオフセットとして使用されます。
このプログラムは、SQLStmtGetText()
関数を使用して、最後に実行されたSQL文のテキストを取得する方法も示します。
人事データベースに新しい従業員レコードを追加し、データベースの整合性をチェックします。必要な数の従業員名を入力でき、「Employee Record」ダイアログ・ボックスで適切なボタンを選択してSQLコマンドを実行できます。これは、サンプル・プログラムのGUIバージョンです。
サンプル・プログラムを実行するには、ユーザー名がscott
、パスワードがtiger
のデータベース・アカウントが必要です。また、サンプル表emp
およびdept
が入っているデータベースが必要です。このアカウントは、Oracle Database 10gサーバーの初期データベースに含まれています。このアカウントがデータベースにない場合は、サンプル・プログラムを実行する前にアカウントを作成します。データベースにemp
表およびdept
表がない場合は、demobld.sql
スクリプトを使用して作成します。
関連項目 Oracle Databaseのプラットフォーム・ガイド |
サンプル表を作成するには、次のようにします。
SQL*Plusを起動します。
ユーザー名scott
、パスワードtiger
として接続します。
demobld.sql
スクリプトを実行します。
SQL> @ORACLE_BASE\ORACLE_HOME\sqlplus\demo\demobld.sql;
サンプル・プログラムは、次の2つの方法でビルドできます。
用意されたpcmake.bat
ファイルを使用する方法
Microsoft Visual Studioを使用する方法
Pro*C/C++デモをコンパイルするためのpcmake.bat
ファイルは、次の場所にあります。
ORACLE_BASE\ORACLE_HOME\precomp\demo\proc
このバッチ・ファイルは、コマンド・プロンプトでPro*C/C++アプリケーションを作成する方法を説明するためのものです。
このバッチ・ファイルを使用するには、Microsoft Visual Studioがインストールされている必要があります。環境変数MSVCDir
を設定します。Pro*C/C++コマンドライン・オプションおよびリンカー・オプションは、アプリケーションによって異なります。
このファイルを使用して、デモをビルドできます。たとえば、sample1
をビルドするには、次のようにします。
デモ・ファイルの場所に移動し、コマンド・プロンプトで次のように入力します。
C:\> CD ORACLE_BASE\ORACLE_HOME\precomp\demo\proc\sample1
次のように入力します。
% pcmake sample1Microsoft Visual Studioプロジェクト・ファイルには、拡張子.dsp
が付いています。ORACLE_BASE\ORACLE_HOME
\precomp\demo\proc
ディレクトリにある.dsp
ファイルにより、サンプル・プログラムをプリコンパイル、コンパイルおよびリンクするために必要な手順が示され、制御されます。
Pro*C/C++、SQL*PlusおよびObject Type Translatorは、Microsoft Visual Studioサンプル・プロジェクト・ファイルに統合されています。コンパイル前に、Pro*C/C++、SQL*PlusおよびObject Type Translatorを別々に実行する必要はありません。
サンプル・プログラムをビルドするには、次のようにします。
Microsoft Visual Studioプロジェクト・ファイル(sample1.dsp
など)を開きます。
プロジェクト・ファイル内のパスをチェックして、それらがシステムの構成に対応していることを確認します。対応していない場合、パスをそれに応じて変更します。コンポーネントのパスに正しくないものがある場合、システムでエラー・メッセージが表示される可能性があります。
「Build」→「Rebuild All」を選択します。Microsoft Visual Studioは実行可能ファイルを作成します。
デフォルトでは、サンプル.pre
ファイルは、それぞれに対応する.pc
ファイルをC:\oracle\ora92
ディレクトリで検索します。C:\
は、使用しているドライブ、oracle\ora92
はOracleホームの場所を表します。Oracleベース・ディレクトリとOracleホーム・ディレクトリがコンピュータ上で異なる場合、ディレクトリ・パスを正しいパスに変更する必要があります。
サンプル.preファイルのディレクトリ・パスを変更するには、次のようにします。
Pro*C/C++で、.pre
ファイルを開きます。
「入力ファイル」領域でファイル名をダブルクリックし、「入力ファイル」ダイアログ・ボックスを表示します。
ディレクトリ・パスを正しいパスに変更します。
「開く」をクリックします。