F サンプル・プログラム

この付録では、このリリースに含まれているサンプル・プログラムを使用して、Pro*C/C++でOracleデータベース・アプリケーションを作成する方法について説明します。

この章のトピックは、次のとおりです:

F.1 サンプル・プログラムの説明

Pro*C/C++をインストールするときに、Oracle Universal Installerによって、Pro*C/C++の一連のサンプル・プログラムがORACLE_BASE\ORACLE_HOME\precomp\demo\procディレクトリにコピーされます。表F-1に、これらのサンプル・プログラムの一覧を示し、後に続く項で説明します。

Oracleが提供するサンプル・プログラムでは、ビルド時に.exe実行可能ファイルが生成されます。

表の「注意」列に示しているように、一部のサンプル・プログラムについては、プリコンパイルして実行する前に、サンプル・ディレクトリにあるSQLスクリプトを実行する必要があります。SQLスクリプトは、サンプル・プログラムが正常に実行されるよう、適切な表およびデータを設定します。これらのSQLスクリプトは、ORACLE_BASE\ORACLE_HOME\precomp\demo\sqlディレクトリにあります。

Pro*C/C++が正常にインストールされ、正しく動作することを検証するために、これらのサンプル・プログラムをビルドし、実行することをお薦めします。プログラムは、使用後に削除できます。

サンプル・プログラムは、pcmake.batというバッチ・ファイルか、Microsoft Visual Studioを使用してビルドできます。

表F-1 サンプル・プログラム

サンプル・プログラム ソース・ファイル Pro*C/C++ GUIプロジェクト・ファイル MSVCコンパイラ・プロジェクト・ファイル 注意

ANSIDYN1

ansidyn1.pc

ansidyn1.pre

ansidyn1.dsp

-

ANSIDYN2

ansidyn2.pc

ansidyn2.pre

ansidyn2.dsp

-

COLDEMO1

coldemo1.h coldemo1.pc coldemo1.sql coldemo1.typ

coldemo1.pre

coldemo1.dsp

coldemo1のビルド前に、coldemo1.sqlとObject Type Translatorを実行します。

CPDEMO1

cpdemo1.pc

cpdemo1.pre

cpdemo1.dsp

-

CPDEMO2

cpdemo2.pc

cpdemo2.pre

cpdemo2.dsp

-

CPPDEMO1

cppdemo1.pc

cppdemo1.pre

cppdemo1.dsp

-

CPPDEMO2

cppdemo2.pc empclass.pc cppdemo2.sql empclass.h

cppdemo2.pre

cppdemo2.dsp

cppdemo2のビルド前に、cppdemo2.sqlを実行します。

CPPDEMO3

cppdemo3.pc

cppdemo3.pre

cppdemo3.dsp

-

CVDEMO

cv_demo.pc cv_demo.sql

cv_demo.pre

cv_demo.dsp

cv_demoのビルド前に、cv_demo.sqlを実行します。

EMPCLASS

cppdemo2.pc empclass.pc cppdemo2.sql empclass.h

empclass.pre

empclass.dsp

empclassのビルド前に、cppdemo2.sqlを実行します。

LOBDEMO1

lobdemo1.h lobdemo1.pc lobdemo1.sql

lobdemo1.pre

lobdemo1.dsp

lobdemo1のビルド前に、lobdemo1.sqlを実行します。

MLTTHRD1

mltthrd1.pc mltthrd1.sql

mltthrd1.pre

mltthrd1.dsp

mltthrd1のビルド前に、mltthrd1.sqlを実行します。

NAVDEMO1

navdemo1.h navdemo1.pc navdemo1.sql navdemo1.typ

navdemo1.pre

navdemo1.dsp

navdemo1のビルド前に、navdemo1.sqlとObject Type Translatorを実行します。

OBJDEMO1

objdemo1.h objdemo1.pc objdemo1.sql objdemo1.typ

objdemo1.pre

objdemo1.dsp

objdemo1のビルド前に、objdemo1.sqlとObject Type Translatorを実行します。

ORACA

oraca.pc oracatst.sql

oraca.pre

oraca.dsp

oracaのビルド前に、oracatst.sqlを実行します。

PLSSAM

plssam.pc

plssam.pre

plssam.dsp

-

SAMPLE

sample.pc

sample.pre

sample.dsp

-

SAMPLE1

sample1.pc

sample1.pre

sample1.dsp

-

SAMPLE2

sample2.pc

sample2.pre

sample2.dsp

-

SAMPLE3

sample3.pc

sample3.pre

sample3.dsp

-

SAMPLE4

sample4.pc

sample4.pre

sample4.dsp

-

SAMPLE5

sample5.pc exampbld.sql examplod.sql

sample5.pre

sample5.dsp

sample5のビルド前に、exampbld.sqlを実行し、次にexamplod.sqlを実行します。

SAMPLE6

sample6.pc

sample6.pre

sample6.dsp

-

SAMPLE7

sample7.pc

sample7.pre

sample7.dsp

-

SAMPLE8

sample8.pc

sample8.pre

sample8.dsp

-

SAMPLE9

sample9.pc calldemo.sql

sample9.pre

sample9.dsp

sample9のビルド前に、calldemo.sqlを実行します。

SAMPLE10

sample10.pc

sample10.pre

sample10.dsp

-

SAMPLE11

sample11.pc sample11.sql

sample11.pre

sample11.dsp

sample11のビルド前に、sample11.sqlを実行します。

SAMPLE12

sample12.pc

sample12.pre

sample12.dsp

-

SCDEMO1

scdemo1.pc

scdemo1.pre

scdemo1.dsp

-

SCDEMO2

scdemo2.pc

scdemo2.pre

scdemo2.dsp

-

SQLVCP

sqlvcp.pc

sqlvcp.pre

sqlvcp.dsp

-

WINSAM

resource.h winsam.h winsam.ico winsam.pc winsam.rc

winsam.pre

winsam.dsp

-

次の各項では、サンプル・プログラムの機能について説明します。

ANSIDYN1

実行時まで認識されないSQL文を、ANSI動的SQLを使用して処理する方法を示します。このプログラムは、ANSI動的SQLを使用するための最も簡単な(ただし、最も効率的というわけではない)方法を紹介することを目的としています。

ANSIDYN2

実行時まで認識されないSQL文を、ANSI動的SQLを使用して処理する方法を示します。このプログラムでは、バッチ処理および参照セマンティクスでOracle拡張機能が使用されます。

COLDEMO1

カリフォルニア州の複数の郡についての人口調査情報をフェッチします。このプログラムでは、コレクション型データベース列によりナビゲートする様々な方法を示します。

CPDEMO1

接続プール機能の使用方法を示します。各種接続プール・オプションを使用して、パフォーマンスを最適化する方法も示します。

CPDEMO2

比較的複雑なSQL文のセットでの接続プーリング機能について示し、パフォーマンスの向上がプログラムで使用されるSQL文の種類によってどのように決まるかを示します。

CPPDEMO1

ユーザーに従業員番号の入力を求め、その従業員の名前、給与および歩合をemp表に問い合せます。このプログラムでは、インジケータ構造体内の標識変数を使用して、歩合がNULLでないかどうかを判別します。

CPPDEMO2

emp表から指定した部門の全従業員の名前を取得します(動的SQL方法3)。

CPPDEMO3

すべての営業担当者を検索し、その名前と総収入(歩合を含む)を出力します。このプログラムは、C++の継承の例です。

CVDEMO

参照カーソルを宣言し、オープンします。

EMPCLASS

EMPCLASSおよびCPPDEMO2ファイルは、C++フレームワーク内でのPro*C/C++プログラムを記述方法の例を示すためのものです。EMPCLASSは、emp表に対する特定の問合せをカプセル化したもので、カーソル変数を使用して実装されます。EMPCLASSは、その問合せのインスタンスをインスタンス化し、empクラスに属するC++メンバー関数により、カーソル変数の機能(openfetchclose)を提供します。empclass.pcファイルは、スタンドアロンのデモ・プログラムではありません。これはcppdemo2デモ・プログラムで使用するために作成されたものです。empクラスを使用するには、empクラスのインスタンスを宣言し、そのクラスのメンバー関数をコールするドライバ(cppdemo2.pc)を作成する必要があります。

LOBDEMO1

個人の社会保障番号に基づいて、データベースに対して犯罪記録のフェッチおよび追加を行います。このプログラムは、ラージ・オブジェクト(LOB)にアクセスして表に格納するメカニズム、およびDBMS_LOBパッケージにより使用可能になるストアド・プロシージャでLOBを操作するメカニズムを示します。

MLTTHRD1

スレッドをプリコンパイラとともに使用する方法を示します。このプログラムでは、スレッドと同じ数のセッションが作成されます。

NAVDEMO1

オブジェクト・キャッシュ内のオブジェクトへのナビゲーショナル・アクセスを示します。

OBJDEMO1

オブジェクトの使用方法を示します。このプログラムでは、オブジェクト型personおよびaddressを操作します。

ORACA

実行時に様々なパフォーマンス・パラメータを判断するためにORACAを使用する方法を示します。

PLSSAM

埋込みPL/SQLブロックの使用方法を示します。このプログラムでは、データベースに登録されている従業員名の入力が要求されます。次に、PL/SQLブロックが実行され、4つのSELECT文の結果が戻されます。

SAMPLE

人事データベースに新しい従業員レコードを追加し、データベースの整合性をチェックします。データベース内の従業員番号には、現在の最大従業員番号+10の値が自動的に選択されます。

SAMPLE1

Oracleデータベースにログインし、ユーザーに従業員番号の入力を要求し、データベースにその従業員の名前、給与および歩合を問い合せて結果を表示します。ユーザーが従業員番号として0を入力するまでこの処理を続けます。

SAMPLE2

Oracleデータベースにログインし、カーソルを宣言してオープンし、すべての営業担当者の名前、給与および歩合をフェッチして結果を表示し、カーソルをクローズします。

SAMPLE3

Oracleデータベースにログインし、カーソルを宣言してオープンし、配列を使用して一括でフェッチし、print_rows()関数を使用して結果を出力します。

SAMPLE4

LONG VARRAW外部データ型を使用して、型同値化の使用方法を示します。

SAMPLE5

ユーザーに口座番号および引落し金額の入力を要求します。プログラムは、口座から金額を引き落す前に、口座番号が正しいことと、その金額を引き落せるだけの預金があることを確認します。このプログラムは、埋込みSQLの使用方法を示します。

SAMPLE6

表を作成して行を挿入し、挿入をコミットして表を削除します(動的SQL方法1)。

SAMPLE7

emp表に2行挿入し、それらを削除します(動的SQL方法2)。

SAMPLE8

emp表から指定した部門の全従業員の名前を取得します(動的SQL方法3)。

SAMPLE9

scott/tigerアカウントを使用して、Oracleデータベースに接続します。このプログラムでは、複数のホスト配列を宣言し、PL/SQLストアド・プロシージャ(CALLDEMOパッケージのGET_EMPLOYEES)をコールします。PL/SQLプロシージャは、ASIZE値まで戻します。プログラムは、すべての行を取得するまでGET_EMPLOYEESをコールし、毎回ASIZE配列を取得して、値を出力し続けます。

SAMPLE10

ユーザー名とパスワードを使用してOracleデータベースに接続し、SQL文の入力を要求します。任意の有効なSQL文を入力できますが、埋込みSQLではなく、通常のSQL構文を使用する必要があります。入力した文は処理されます。文が問合せの場合、フェッチされた行が表示されます(動的SQL方法4)。

SAMPLE11

カーソル変数を使用して、emp表からフェッチします。カーソルは、EMP_DEMO_PKGパッケージ内のPL/SQLストアド・プロシージャopen_curでオープンされます。

SAMPLE12

動的SQL方法4を使用して配列フェッチを実行する方法を示します。

SCDEMO1

Oracle動的SQL方法4でスクロール可能カーソルを使用する方法を示します。スクロール可能カーソルは、ANSIの動的SQL方法4でも使用できます。

SCDEMO2

ホスト配列でスクロール可能カーソルを使用する方法を示します。

SQLVCP

sqlvcp()関数を使用してVARCHAR構造体の実際のサイズを確認する方法を示します。サイズは、VARCHARの配列を移動するポインタを増やすためのオフセットとして使用されます。

このプログラムは、SQLStmtGetText()関数を使用して、最後に実行されたSQL文のテキストを取得する方法も示します。

WINSAM

人事データベースに新しい従業員レコードを追加し、データベースの整合性をチェックします。人事データベースに新しい従業員レコードを追加し、データベースの整合性をチェックします。必要な数の従業員名を入力でき、「Employee Record」ダイアログ・ボックスで適切なボタンを選択してSQLコマンドを実行できます。これは、サンプル・プログラムのGUIバージョンです。

F.2 サンプル表の作成

サンプル・プログラムを実行するには、ユーザー名がscott、パスワードがtigerのデータベース・アカウントが必要です。また、サンプル表empおよびdept.が入っているデータベースが必要です。このアカウントは、Oracle Database 10gサーバーの初期データベースに含まれています。このアカウントがデータベースにない場合は、サンプル・プログラムを実行する前にアカウントを作成します。データベースにemp表およびdept表がない場合は、demobld.sqlスクリプトを使用して作成します。

サンプル表を作成するには、次のようにします。

  1. SQL*Plusを起動します。
  2. ユーザー名scottとパスワードtigerを使用して接続します。
  3. demobld.sqlスクリプトを実行します。
    SQL> @ORACLE_BASE\ORACLE_HOME\sqlplus\demo\demobld.sql;

F.3 サンプル・プログラムのビルドについて

サンプル・プログラムは、次の2つの方法でビルドできます。

  • 用意されたpcmake.batファイルを使用する方法

  • Microsoft Visual Studioを使用する方法

F.3.1 pcmake.batを使用する方法

Pro*C/C++デモをコンパイルするためのpcmake.batファイルは、次の場所にあります。

ORACLE_BASE\ORACLE_HOME\precomp\demo\proc

このバッチ・ファイルは、コマンド・プロンプトでPro*C/C++アプリケーションを作成する方法を説明するためのものです。

このバッチ・ファイルを使用するには、Microsoft Visual Studioがインストールされている必要があります。環境変数MSVCDirを設定します。Pro*C/C++コマンドライン・オプションおよびリンカー・オプションは、アプリケーションによって異なります。

このファイルを使用して、デモをビルドできます。たとえば、sample1をビルドするには、次のようにします。

  1. デモ・ファイルの場所に移動し、コマンド・プロンプトで次のように入力します。
    C:\> CD ORACLE_BASE\ORACLE_HOME\precomp\demo\proc\sample1
  2. 次のように入力します。
    % pcmake sample1

F.4 Microsoft Visual Studioを使用する方法

Microsoft 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を別々に実行する必要はありません。

サンプル・プログラムをビルドするには、次のようにします。

  1. Microsoft Visual Studioプロジェクト・ファイル(sample1.dspなど)を開きます。

  2. プロジェクト・ファイル内のパスをチェックして、それらがシステムの構成に対応していることを確認します。対応していない場合、パスをそれに応じて変更します。コンポーネントのパスに正しくないものがある場合、システムでエラー・メッセージが表示される可能性があります。

    注意:

    サンプル・プログラムはすべて、デフォルト・ドライブをC:\oracle\ora92として作成されています。

  1. 「Build」→「Rebuild All」を選択します。Microsoft Visual Studioは実行可能ファイルを作成します。

F.5 サンプル.preファイルのパスの設定

デフォルトでは、サンプル.preファイルは、それぞれに対応する.pcファイルをC:\oracle\ora92ディレクトリで検索します。C:\は使用しているドライブ、oracle\ora92はOracleホームの場所を表します。Oracleベース・ディレクトリとOracleホーム・ディレクトリがコンピュータ上で異なる場合、ディレクトリ・パスを正しいパスに変更する必要があります。

サンプル.preファイルのディレクトリ・パスを変更するには、次のようにします。

  1. Pro*C/C++で、.preファイルを開きます。
  2. 「入力ファイル」領域でファイル名をダブルクリックし、「入力ファイル」ダイアログ・ボックスを表示します。
  3. ディレクトリ・パスを正しいパスに変更します。
  4. 「開く」をクリックします。