アプリケーション構築の手引き

Microsoft Visual C++

この節では以下のトピックを取り上げています。

注:Visual C++ コンパイラーは、 %DB2PATH%\samples\c ディレクトリーと %DB2PATH%\samples\cpp ディレクトリーにある、 C と C++ の両方のサンプル・プログラムに使用されます。 同じバッチ・ファイルがこれらの 2 つのディレクトリー内に置かれています。 これらのディレクトリーにあるバッチ・ファイルには、 ファイルの拡張子に応じて、 C または C++ のどちらかのソース・ファイルを受け入れるコマンドが含まれています。 バッチ・ファイルを使用しない最初の 2 つのトピック「ActiveX Data Objects (ADO)」と「オブジェクトのリンクと埋め込み (OLE) オートメーション」を除き、 この節ではバッチ・ファイルを使用してプログラムを作成する方法を例を挙げて説明します。

ActiveX Data Objects (ADO)

以下に示す変更を行うと、Visual C++ を使用する DB2 ADO プログラムは、 正規の C++ プログラムと同じようにコンパイルできるようになります。

C++ ソース・プログラムを ADO プログラムとして実行するには、 以下の IMPORT ステートメントをソース・プログラム・ファイルの先頭に置くことができます。

#import "C:\program files\common files\system\ado\msado<VERSION NUMBER>.dll" \
	no_namespace \
	rename( "EOF", "adoEOF")

<VERSION NUMBER> は、ADO ライブラリーのバージョン番号です。

プログラムがコンパイルされたら、 ユーザーは msado<VERSION NUMBER>.dll が指定されたパスにあるかどうか検証する必要があります。 C:\program files\common files\system\ado を環境変数 LIBPATH に追加し、 短くした IMPORT ステートメントを以下のようにソース・ファイルで使用することもできます。

#import <msado<VERSION NUMBER>.dll> \
	no_namespace \
	rename( "EOF", "adoEOF")

DB2 サンプル・プログラム BLOBAccess.dsp では、 この方法が使用されています。

この IMPORT ステートメントにより、 DB2 プログラムには ADO ライブラリーへのアクセス権が与えられます。 これで、 Visual C++ プログラムも他のプログラムと同様にコンパイルできるようになります。 また、DB2 API または DB2 CLI など、 別のプログラミング・インターフェースを使用する場合、 プログラム作成の詳細については、この章の該当する節を参照してください。

DB2 の %DB2PATH%\samples\ADO\VC に、 Visual C++ ADO のサンプル・プログラムがあります。

オブジェクトのリンクと埋め込み (OLE) オートメーション

この節では、 Microsoft Visual C++ でのオブジェクトのリンクと埋め込み (OLE) オートメーション UDF、 およびストアード・プロシージャーの OLE オートメーション制御プログラム・サンプルについて説明します。

OLE オートメーション UDF およびストアード・プロシージャーは、 OLE が言語独立であるので、 OLE オートメーション・サーバーのメソッドを公開し、 そのメソッドを DB2 を使用する UDF として登録することによって、 任意の言語で実現できます。 OLE オートメーション・サーバーの開発をサポートするアプリケーション開発環境には、 以下の特定のバージョンが含まれます。 Microsoft Visual Basic、Microsoft Visual C++、Microsoft Visual J++、 Microsoft FoxPro、Borland Delphi、Powersoft PowerBuilder、 および Micro Focus COBOL。 さらに、たとえば Microsoft Visual J++ に付属するような、 OLE 用に同梱されている Java の簡単なオブジェクトも、 OLE オートメーションを介してアクセスできます。

OLE オートメーション・サーバーの開発の詳細については、 該当するアプリケーション開発環境の資料を参照する必要があります。 OLE オートメーションを使用した DB2 プログラミングの詳細については、 アプリケーション開発の手引き を参照してください。

OLE オートメーション UDF およびストアード・プロシージャー

Microsoft Visual C++ は、 OLE オートメーション・サーバーの作成をサポートします。 サーバーは、 Microsoft Foundation Classes および Microsoft Foundation Class アプリケーション・ウィザードを使用して、 または Win32 アプリケーションとして実現することができます。 サーバーは、DLL または EXE にすることができます。 詳細については、 Microsoft Visual C++ の資料および Microsoft Visual C++ によって提供される OLE サンプルを参照してください。 DB2 用の Visual C++ UDF を作成するための情報については、 "ユーザー定義関数 (UDF)"を参照してください。 DB2 CLI を使って Visual C++ ストアード・プロシージャーを作成するための情報については、 "DB2 CLI ストアード・プロシージャー"を参照してください。 DB2 用の Visual C++ 組み込み SQL ストアード・プロシージャーを作成するための情報については、 "組み込み SQL ストアード・プロシージャー"を参照してください。

DB2 は、 Microsoft Visual C++ に含まれている OLE オートメーション UDF およびストアード・プロシージャーのサンプルを提供しており、 それはディレクトリー %DB2PATH%\samples\ole\msvc にあります。 OLE オートメーション UDF およびストアード・プロシージャーのサンプルを作成して実行する方法については、 %DB2PATH%\samples\oleREADME ファイルを参照してください。

DB2 CLI アプリケーション

%DB2PATH%\samples\cli にあるバッチ・ファイル bldmcli.bat には、 DB2 CLI プログラムを作成するためのコマンドが入っています。

このパラメーター %1 には、ソース・ファイルの名前を指定します。

これは、唯一の必須パラメーターであり、 組み込み SQL を含まない CLI プログラムに必要なパラメーターはこのパラメーターだけです。 組み込み SQL プログラムを作成するためにはデータベースへの接続が必要なため、 3 つのパラメーターがオプションとして用意されています。 2 番目のパラメーターは %2 で、 接続するデータベースの名前を指定します。 3 番目のパラメーターは %3 で、 データベースのユーザー ID を指定します。 そしてもう 1 つが %4 で、 データベースのパスワードを指定します。

プログラムに組み込み SQL (.sqc または .sqx 拡張子が付いている) が含まれている場合、 embprep バッチ・ファイルは、.c または .cxx 拡張子を持つプログラム・ファイルを生成して、 プログラムをプリコンパイルするために呼び出されます。

@echo off
rem  bldmcli batch file - Windows 32-bit Operating Systems
rem  Builds a CLI program with Microsoft Visual C++.
rem  Usage: bldmcli prog_name [ db_name [ userid password ]]
if exist "%1.sqc" call embprep %1 %2 %3 %4
if exist "%1.sqx" call embprep %1 %2 %3 %4
rem Compile the error-checking utility.
cl -Z7 -Od -c -W1 -D_X86=1 -DWIN32 utilcli.c
rem  Compile the program.
if exist "%1.sqx" goto cpp
cl -Z7 -Od -c -W1 -D_X86=1 -DWIN32 %1.c
goto link_step
:cpp
cl -Z7 -Od -c -W2 -D_X86_=1 -DWIN32 %1.cxx
rem  Link the program.
:link_step
link -debug:full -debugtype:cv -OUT:%1.exe %1.obj utilcli.obj db2cli.lib
@echo on


bldmcli のコンパイルおよびリンク・オプション

コンパイル・オプション

cl
Microsoft Visual C++ コンパイラー。

-Z7
生成される C7 スタイル CodeView 情報。

-Od
最適化なし。 最適化をオフにしてデバッガーを使用する方が簡単です。

-c
コンパイルのみを実行し、リンクは実行しません。 本書では、コンパイルとリンクが別個のステップであることを前提としています。

-W1
警告レベルを設定します。

-D_X86_=1
32 ビット・オペレーティング・システムを Intel ベースのコンピューターで実行するために必要なコンパイラー・オプション。

-DWIN32
32 ビット・オペレーティング・システムに必要なコンパイラー・オプション。

リンク・オプション

link
リンク編集に 32 ビットのリンカーを使用します。

-debug:full
デバッグ情報を組み込みます。

-debugtype:cv
デバッガー・タイプを指定します。

-OUT:%1.exe
実行可能ファイルを指定します。

%1.obj
オブジェクト・ファイルを組み込みます。

utilcli.obj
エラー検査用のユーティリティー・オブジェクト・ファイルを組み込みます。

db2cli.lib
DB2 CLI ライブラリーとリンクします。

他のコンパイラー・オプションについては、 コンパイラーの資料をご覧ください。

ソース・ファイル tbinfo.c からサンプル・プログラム tbinfo を作成するには、 次のように入力します。

   bldmcli tbinfo

結果として、実行可能ファイル tbinfo が作成されます。 この実行可能ファイルを実行するには、次の実行可能名を入力します。

   tbinfo

組み込み SQL アプリケーションの構築および実行

ソース・ファイル dbusemx.sqc から組み込み SQL アプリケーション dbusemx を作成する場合、 次の 3 つの方法があります。

  1. 同じインスタンスにあるサンプル・データベースに接続している場合は、 次のように入力します。
       bldmcli dbusemx
    
  2. 同じインスタンスにある他のデータベースに接続している場合は、 さらにデータベース名も入力します。
       bldmcli dbusemx database
    
  3. 他のインスタンスにあるデータベースに接続している場合は、 さらにそのデータベース・インスタンスのユーザー ID とパスワードも入力します。
       bldmcli dbusemx database userid password
    

結果として、実行可能ファイル dbusemx が作成されます。

この組み込み SQL アプリケーションを実行する方法には次の 3 つがあります。

  1. 同じインスタンスにある sample データベースにアクセスする場合は、 ただ実行可能ファイルの名前を入力します。
       dbusemx
    
  2. 同じインスタンスにある他のデータベースにアクセスする場合は、 実行可能ファイル名とデータベース名を入力します。
       dbusemx database
    
  3. 他のインスタンスにあるデータベースにアクセスする場合は、 実行可能ファイル名、データベース名、 およびそのデータベース・インスタンスのユーザー ID とパスワードを入力します。
       dbusemx database userid password
    

DB2 API を使用する DB2 CLI アプリケーション

DB2 には、CLI サンプル・プログラムが含まれています。 このサンプル・プログラムは、DB2 API を使用してデータベースを作成およびドロップし、 CLI 機能を複数のデータベースで使用する方法を示します。 DB2 API を使用するサンプルは、 表 7 にある CLI サンプル・プログラムの説明の中に示されています。

sqllib/samples/cli にあるスクリプト・ファイル bldmapi には、 DB2 API を持つ DB2 CLI プログラムを作成するためのコマンドが入っています。 このファイルは、 データベースを作成およびドロップするための DB2 API が入った utilapi ユーティリティー・ファイルでコンパイルおよびリンクします。 この点が、このファイルと bldmcli バッチ・ファイルの唯一の違いです。 bldmapibldmcli の両方に共通のコンパイルおよびリンク・オプションについては、 "DB2 CLI アプリケーション" を参照してください。

ソース・ファイル dbmconn.c からサンプル・プログラム dbmconn を作成するには、 次のように入力します。

   bldmapi dbmconn

結果として、実行可能ファイル dbmconn が作成されます。 この実行可能ファイルを実行するには、次の実行可能名を入力します。

   dbmconn

DB2 CLI ストアード・プロシージャー

%DB2PATH%\samples\cli にあるバッチ・ファイル bldmclis.bat には、 CLI ストアード・プロシージャーを作成するためのコマンドが入っています。 バッチ・ファイルは、 ストアード・プロシージャーをサーバー上の DLL 内に作成します。

このパラメーター %1 には、ソース・ファイルの名前を指定します。 バッチ・ファイルでは、 ソース・ファイル名 %1 を DLL 名に使用します。

@echo off
rem bldmclis.bat file - Windows 32-bit Operating Systems
rem Builds a CLI stored procedure using the Microsoft Visual C++ compiler.
rem Usage: bldmclis prog_name
if "%1" == "" goto error
rem Compile the program.
if exist "%1.cxx" goto cpp
cl -Z7 -Od -c -W2 -D_X86_=1 -DWIN32 %1.c  utilcli.c
goto link_step
:cpp
cl -Z7 -Od -c -W2 -D_X86_=1 -DWIN32 %1.cxx  utilcli.c
rem Link the program.
:link_step
link -debug:full -debugtype:cv -dll -out:%1.dll %1.obj utilcli.obj db2cli.lib -def:%1.def
rem Copy the stored procedure DLL to the 'function' directory
copy %1.dll "%DB2PATH%\function"
goto exit
:error
echo Usage: bldmclis prog_name
:exit
@echo on


bldmclis のコンパイルおよびリンク・オプション

コンパイル・オプション

cl
Microsoft Visual C++ コンパイラー。

-Z7
生成される C7 スタイル CodeView 情報。

-Od
最適化なし。 最適化をオフにしてデバッガーを使用する方が簡単です。

-c
コンパイルのみを実行し、リンクは実行しません。 本書では、コンパイルとリンクが別個のステップであることを前提としています。

-W2
警告レベルを設定します。

-D_X86_=1
32 ビット・オペレーティング・システムを Intel ベースのコンピューターで実行するために必要なコンパイラー・オプション。

-DWIN32
32 ビット・オペレーティング・システムに必要なコンパイラー・オプション。

リンク・オプション

link
リンク編集に 32 ビットのリンカーを使用します。

-debug:full
デバッグ情報を組み込みます。

-debugtype:cv
デバッガー・タイプを指定します。

-OUT:%1.dll
.DLL ファイルを作成します。

%1.obj
オブジェクト・ファイルを組み込みます。

utilcli.obj
エラー検査用のユーティリティー・オブジェクト・ファイルを組み込みます。

db2cli.lib
DB2 CLI ライブラリーとリンクします。

-def:%1.def
モジュール定義ファイルを使用します。

他のコンパイラー・オプションについては、 コンパイラーの資料をご覧ください。

ソース・ファイル spserver.c から spserver ストアード・プロシージャーを作成するには、 次のように入力します。

   bldmclis spserver

このバッチ・ファイルは、CLI サンプル・プログラムと同じディレクトリーに入っている、 モジュール定義ファイル spserver.def を使用してストアード・プロシージャーを作成します。 このバッチ・ファイルは、 ストアード・プロシージャー DLL の spserver.dll をサーバー上の %DB2PATH%\function というパスにコピーします。

次に、サーバー上で spcreate.db2 スクリプトを実行して、 ストアード・プロシージャーをカタログ化します。 まず、データベースに接続します。

   db2 connect to sample

ストアード・プロシージャーがすでにカタログ化されている場合は、 次のコマンドを使用してそれらをドロップすることができます。

   db2 -td@ -vf spdrop.db2

その後、次のコマンドでストアード・プロシージャーをカタログ化します。

   db2 -td@ -vf spcreate.db2

カタログ化が終了したら、データベースを 1 度停止してから再始動し、 新しい共用ライブラリーが認識されるようにします。 必要であれば、共用ライブラリーにファイル・モードを設定して、 DB2 インスタンスからアクセスできるようにします。

ストアード・プロシージャー spserver を作成したなら、 そのストアード・プロシージャーを呼び出す CLI クライアント・アプリケーション spclient を構築できます。

spclient は、スクリプト・ファイル bldmcli を使用して構築することができます。 詳細については、 "DB2 CLI アプリケーション"を参照してください。

ストアード・プロシージャーを呼び出すためには、 次のように入力してサンプル・クライアント・アプリケーションを実行します。

spclient database userid password

ここで、それぞれは次のものを表します。

database
接続先のデータベースの名前です。 名前は、sample かその別名、またはその他のデータベース名にすることができます。

userid
有効なユーザー ID です。

password
有効なパスワードです。

クライアント・アプリケーションは、 ストアード・プロシージャー・ライブラリー spserver にアクセスし、 サーバー・データベース上のいくつかのストアード・プロシージャー関数を実行します。 出力は、クライアント・アプリケーションに戻されます。

DB2 API と組み込み SQL アプリケーション

%DB2PATH%\samples\c%DB2PATH%\samples\cpp にあるバッチ・ファイル bldmapp.bat には、 組み込み SQL プログラムを作成するためのコマンドが入っています。

第 1 パラメーター %1 には、ソース・ファイルの名前を指定します。 これは組み込み SQL を含まないプログラムに必要な唯一のパラメーターです。 組み込み SQL プログラムを構築するにはデータベースへの接続が必要なので、 3 つのオプション・パラメーターが提供されます。 第 2 パラメーター %2 は接続したいデータベースの名前を指定し、 第 3 パラメーター %3 はデータベースのユーザー ID を指定し、 %4 はパスワードを指定します。

組み込み SQL プログラムの場合、 bldmapp は、プリコンパイルおよびバインド・ファイル embprep にパラメーターを渡します。 データベース名を指定しない場合は、 デフォルトの sample データベースを使用します。なお、ユーザー ID とパスワードのパラメーターは、 プログラムを構築するインスタンスとデータベースのあるインスタンスが異なる場合にのみ必要になります。

@echo off
rem bldmapp.bat -- Windows 32-bit operating systems
rem Builds a Microsoft Visual C++ application program
rem Usage: bldmapp prog_name [ db_name [ userid password ]]
if exist "%1.sqx" goto embedded
if exist "%1.sqc" goto embedded
goto non_embedded
:embedded
rem Precompile and bind the program.
call embprep %1 %2 %3 %4
rem  Compile the program.
if exist "%1.cxx" goto cpp_emb
cl -Z7 -Od -c -W2 -D_X86_=1 -DWIN32 %1.c utilemb.c
goto link_embedded
:cpp_emb
cl -Z7 -Od -c -W2 -D_X86_=1 -DWIN32 %1.cxx utilemb.cxx
rem Link the program.
:link_embedded
link -debug:full -debugtype:cv -out:%1.exe %1.obj utilemb.obj db2api.lib
goto exit
:non_embedded
rem  Compile the program.
if exist "%1.cxx" goto cpp_non
cl -Z7 -Od -c -W2 -D_X86_=1 -DWIN32 %1.c utilapi.c
goto link_non_embedded
:cpp_non
cl -Z7 -Od -c -W2 -D_X86_=1 -DWIN32 %1.cxx utilapi.cxx
rem Link the program.
:link_non_embedded
link -debug:full -debugtype:cv -out:%1.exe %1.obj utilapi.obj db2api.lib
:exit
@echo on


bldmapp のコンパイルおよびリンク・オプション

コンパイル・オプション

cl
Microsoft Visual C++ コンパイラー。

-Z7
生成される C7 スタイル CodeView 情報。

-Od
最適化なし。 最適化をオフにしてデバッガーを使用する方が簡単です。

-c
コンパイルのみを実行し、リンクは実行しません。 本書では、コンパイルとリンクが別個のステップであることを前提としています。

-W2
警告レベルを設定します。

-D_X86_=1
32 ビット・オペレーティング・システムを Intel ベースのコンピューターで実行するために必要なコンパイラー・オプション。

-DWIN32
32 ビット・オペレーティング・システムに必要なコンパイラー・オプション。

リンク・オプション

link
リンク編集に 32 ビットのリンカーを使用します。

-debug:full
デバッグ情報を組み込みます。

-debugtype:cv
デバッガー・タイプを指定します。

-out:%1.exe
ファイル名を指定します。

%1.obj
オブジェクト・ファイルを組み込みます。

utilemb.obj
組み込み SQL プログラムの場合に、 エラー・チェックを行う組み込み SQL ユーティリティー・オブジェクト・ファイルを含みます。

utilapi.obj
組み込み SQL プログラムでない場合に、 エラー・チェックを行う DB2 API ユーティリティー・オブジェクト・ファイルを含みます。

db2api.lib
DB2 ライブラリーとリンクします。

他のコンパイラー・オプションについては、 コンパイラーの資料をご覧ください。

%DB2PATH%\samples\c のソース・ファイル client.c 、 または %DB2PATH%\samples\cpp のソース・ファイル client.cxx のどちらかから、 DB2 API の組み込み SQL を含まないサンプル・プログラム client を作成するには、 次のように入力します。

   bldmapp client

結果として、実行可能ファイル client.exe が作成されます。 この実行可能ファイルを実行するには、 次の実行可能ファイル名を (拡張子なしで) コマンド行に入力します。

   client

組み込み SQL アプリケーションの構築および実行

%DB2PATH%\samples\c の C ソース・ファイル updat.sqc 、 または %DB2PATH%\samples\cpp の C++ ソース・ファイル updat.sqx から組み込み SQL アプリケーション updat を構築する方法は 3 つあります。

  1. 同じインスタンスにあるサンプル・データベースに接続している場合は、 次のように入力します。
       bldmapp updat
    
  2. 同じインスタンスにある他のデータベースに接続している場合は、 さらにデータベース名も入力します。
       bldmapp updat database
    
  3. 他のインスタンスにあるデータベースに接続している場合は、 さらにそのデータベース・インスタンスのユーザー ID とパスワードも入力します。
       bldmapp updat database userid password
    

結果として、実行可能ファイル updat.exe が作成されます。

この組み込み SQL アプリケーションを実行する方法には次の 3 つがあります。

  1. 同じインスタンスにある sample データベースにアクセスする場合は、 ただ実行可能ファイルの名前を入力します。
       updat
    
  2. 同じインスタンスにある他のデータベースにアクセスする場合は、 実行可能ファイル名とデータベース名を入力します。
       updat database
    
  3. 他のインスタンスにあるデータベースにアクセスする場合は、 実行可能ファイル名、データベース名、 およびそのデータベース・インスタンスのユーザー ID とパスワードを入力します。
       updat database userid password
    

組み込み SQL ストアード・プロシージャー

%DB2PATH%\samples\c%DB2PATH%\samples\cpp にあるバッチ・ファイル bldmsrv.bat には、 組み込み SQL ストアード・プロシージャーを作成するためのコマンドが入っています。 バッチ・ファイルは、 ストアード・プロシージャーをサーバー上の DLL 内に作成します。

第 1 パラメーター %1 には、ソース・ファイルの名前を指定します。 第 2 パラメーター %2 には、接続先のデータベースの名前を指定します。 ストアード・プロシージャーは、 必ずデータベースが常駐するインスタンスに構築される必要があるため、 ユーザー ID やパスワードを指定するパラメーターはありません。

第 1 パラメーター (ソース・ファイル名) だけが必須です。 データベース名は任意で指定します。 データベース名を指定しない場合、 プログラムはデフォルトの sample データベースを使用します。

バッチ・ファイルでは、 ソース・ファイル名 %1 を DLL 名に使用します。

@echo off
rem bldmsrv.bat -- Windows 32-bit operating systems
rem Builds a Microsoft Visual C++ stored procedure
rem Usage: bldmsrv prog_name [ db_name ]
rem Precompile and bind the program.
call embprep %1 %2
rem Compile the program.
if exist "%1.cxx" goto cpp
cl -Z7 -Od -c -W2 -D_X86_=1 -DWIN32 %1.c
goto link_step
:cpp
cl -Z7 -Od -c -W2 -D_X86_=1 -DWIN32 %1.cxx
:link_step
rem Link the program.
link -debug:full -debugtype:cv -out:%1.dll -dll %1.obj db2api.lib -def:%1.def
rem Copy the stored procedure DLL to the 'function' directory
copy %1.dll "%DB2PATH%\function"
@echo on


bldmsrv のコンパイルおよびリンク・オプション

コンパイル・オプション

cl
Microsoft Visual C++ コンパイラー。

-Z7
生成される C7 スタイル CodeView 情報。

-Od
最適化なし。

-c
コンパイルのみを実行し、リンクは実行しません。 本書では、コンパイルとリンクが別個のステップであることを前提としています。

-W2
警告、エラー、重大、および回復不能エラー・メッセージを出力します。

-D_X86_=1
32 ビット・オペレーティング・システムを Intel ベースのコンピューターで実行するために必要なコンパイラー・オプション。

-DWIN32
32 ビット・オペレーティング・システムに必要なコンパイラー・オプション。

リンク・オプション

link
リンク編集にリンカーを使用します。

-debug:full
デバッグ情報を組み込みます。

-debugtype:cv
デバッガー・タイプを指定します。

-out:%1.dll
.DLL ファイルを作成します。

%1.obj
オブジェクト・ファイルを組み込みます。

db2api.lib
DB2 ライブラリーとリンクします。

-def:%1.def
モジュール定義ファイル。

他のコンパイラー・オプションについては、 コンパイラーの資料をご覧ください。

C ソース・ファイル spserver.sqc 、 または C++ ソース・ファイル spserver.sqx のどちらかから spserver ストアード・プロシージャーを作成するには、 次のように入力します。

   bldmsrv spserver

他のデータベースに接続しているときは、 さらにデータベース名も入力します。

    bldmsrv spserver database

このバッチ・ファイルは、サンプル・プログラムと同じディレクトリーに入っている、 モジュール定義ファイル spserver.def を使用して DLL を作成します。 このバッチ・ファイルは、 DLL の spserver.dll をサーバー上の %DB2PATH%\function というパスにコピーします。

次に、サーバー上で spcreate.db2 スクリプトを実行して、 ストアード・プロシージャーをカタログ化します。 まず、データベースに接続します。

   db2 connect to sample

ストアード・プロシージャーがすでにカタログ化されている場合は、 次のコマンドを使用してそれらをドロップすることができます。

   db2 -td@ -vf spdrop.db2

その後、次のコマンドでストアード・プロシージャーをカタログ化します。

   db2 -td@ -vf spcreate.db2

カタログ化が終了したら、データベースを 1 度停止してから再始動し、 新しい共用ライブラリーが認識されるようにします。 必要であれば、共用ライブラリーにファイル・モードを設定して、 DB2 インスタンスからアクセスできるようにします。

ストアード・プロシージャー DLL spserver を作成したなら、 そのストアード・プロシージャーを呼び出すクライアント・アプリケーション spclient を構築できます。

spclient は、スクリプト・ファイル bldmapp を使用して構築することができます。 詳細については、 "DB2 API と組み込み SQL アプリケーション"を参照してください。

ストアード・プロシージャーを呼び出すためには、 次のように入力してサンプル・クライアント・アプリケーションを実行します。

spclient database userid password

ここで、それぞれは次のものを表します。

database
接続先のデータベースの名前です。 名前は、sample かその別名、またはその他のデータベース名にすることができます。

userid
有効なユーザー ID です。

password
有効なパスワードです。

クライアント・アプリケーションは、 ストアード・プロシージャー DLL spserver にアクセスし、 サーバー・データベース上のいくつかのストアード・プロシージャー関数を実行します。 出力は、クライアント・アプリケーションに戻されます。

ユーザー定義関数 (UDF)

%DB2PATH%\samples\c%DB2PATH%\samples\cpp にあるバッチ・ファイル bldmudf には、 UDF を作成するためのコマンドが入っています。

UDF には、組み込み SQL ステートメントは含められません。 このため、UDF プログラムを作成するには、 プログラムをプリコンパイルおよびバインドするためにデータベースに接続する必要はありません。

バッチ・ファイルは、ソース・ファイルの名前を指定する、 %1 というパラメーターを取ります。 ソース・ファイル名 %1 を DLL 名に使用します。

@echo off
rem bldmudf.bat -- Windows 32-bit operating systems
rem Builds a Microsoft Visual C++ user-defined function (UDF).
rem Usage: bldmudf udf_prog_name
if "%1" == "" goto error
rem Compile the program.
if exist "%1.cxx" goto cpp
cl -Z7 -Od -c -W2 -D_X86_=1 -DWIN32 %1.c
goto link_step
:cpp
cl -Z7 -Od -c -W2 -D_X86_=1 -DWIN32 %1.cxx
:link_step
rem Link the program.
link -debug:full -debugtype:cv -dll -out:%1.dll %1.obj db2api.lib db2apie.lib -def:%1.def
rem Copy the UDF DLL to the 'function' directory
copy %1.dll "%DB2PATH%\function"
goto exit
:error
echo Usage: bldmudf prog_name
:exit
@echo on


bldmudf のコンパイルおよびリンク・オプション

コンパイル・オプション

cl
Microsoft Visual C++ コンパイラー。

-Z7
生成される C7 スタイル CodeView 情報。

-Od
最適化なし。

-c
コンパイルのみを実行し、リンクは実行しません。 本書では、コンパイルとリンクが別個のステップであることを前提としています。

-W2
警告、エラー、重大、および回復不能エラー・メッセージを出力します。

-D_X86_=1
32 ビット・オペレーティング・システムを Intel ベースのコンピューターで実行するために必要なコンパイラー・オプション。

-DWIN32
32 ビット・オペレーティング・システムに必要なコンパイラー・オプション。

リンク・オプション

link
リンク編集にリンカーを使用します。

-debug:full
デバッグ情報を組み込みます。

-debugtype:cv
デバッガー・タイプを指定します。

-dll
DLL を作成します。

-out:%1.dll
.DLL ファイルを作成します。

%1.obj
オブジェクト・ファイルを組み込みます。

db2api.lib
DB2 ライブラリーとリンクします。

db2apie.lib
DB2 API エンジン・ライブラリーとリンクします。

-def:%1.def
モジュール定義ファイル。

他のコンパイラー・オプションについては、 コンパイラーの資料をご覧ください。

ユーザー定義関数 udfsrv をソース・ファイル udfsrv.c から作成するには、 次のように入力します。

   bldmudf udfsrv

このバッチ・ファイルは、 サンプル・プログラムと同じディレクトリーに入っている、 モジュール定義ファイル udfsrv.def を使用してユーザー定義関数を作成します。 このバッチ・ファイルは、 ユーザー定義関数 DLL の udfsrv.dll をサーバー上の %DB2PATH%\function というパスにコピーします。

udfsrv を作成したなら、 それを呼び出すクライアント・アプリケーション udfcli を構築できます。 DB2 CLI が、 このプログラムの組み込み SQL C および C++ バージョンとともに提供されます。

DB2 CLI udfcli プログラムは、 %DB2PATH%\samples\cli のバッチ・ファイル bldmcli を使用して、 udfcli.c ソース・ファイルから作成できます。 詳細については、"DB2 CLI アプリケーション" を参照してください。

組み込み SQL C udfcli プログラムは、 %DB2PATH%\samples\c のバッチ・ファイル bldmapp を使用して、 udfcli.sqc ソース・ファイルから作成できます。 詳細については、 "DB2 API と組み込み SQL アプリケーション"を参照してください。

組み込み SQL C++ udfcli プログラムは、 %DB2PATH%\samples\cpp のバッチ・ファイル bldmapp を使用して、 udfcli.sqx ソース・ファイルから作成できます。 詳細については、 "DB2 API と組み込み SQL アプリケーション"を参照してください。

UDF を実行するには、次のように入力します。

   udfcli

この呼び出しアプリケーションは、 udfsrv DLL から ScalarUDF 関数を呼び出します。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]