この節では以下のトピックを取り上げています。
sqllib/samples/cpp にあるスクリプト・ファイル bldapp には、 DB2 アプリケーション・プログラムを構築するコマンドが含まれています。
第 1 パラメーター $1 には、ソース・ファイルの名前を指定します。 非組み込み SQL アプリケーションの必須パラメーターはこのパラメーターだけです。 組み込み SQL プログラムを作成するためにはデータベースへの接続が必要なため、 オプションとして 3 つのパラメーターが用意されています。 2 番目のパラメーターは $2 で、 接続するデータベースの名前を指定します。 3 番目のパラメーターは $3 で、 データベースのユーザー ID を指定します。 そしてもう 1 つが $4 で、 データベースのパスワードを指定します。
組み込み SQL プログラムの場合、bldapp は、 プリコンパイルおよびバインドのファイル embprep にパラメーターを渡します。
#! /bin/ksh # bldapp script file -- Silicon Graphics IRIX # Builds a C++ application program # Usage: bldapp <prog_name> [ <db_name> [ <userid> <password> ]] # Set DB2PATH to where DB2 will be accessed. # The default is the standard instance path. DB2PATH=$HOME/sqllib # To compile with n32 object support, uncomment the following line. # IRIX_OBJECT_MODE=-n32 if [ "$IRIX_OBJECT_MODE" = "-n32" ] ; then # Link with db2 n32 object type libraries. DB2_LIBPATH=$DB2PATH/lib32 else # Link with db2 o32 object type libraries. DB2_LIBPATH=$DB2PATH/lib fi # If an embedded SQL program, precompile and bind it. if [[ -f $1".sqC" ]] then embprep $1 $2 $3 $4 # Compile the utilemb.C error-checking utility. CC $IRIX_OBJECT_MODE -I$DB2PATH/include -c utilemb.C else # Compile the utilapi.c error-checking utility. CC $IRIX_OBJECT_MODE -I$DB2PATH/include -c utilapi.C fi # Compile the program. CC $IRIX_OBJECT_MODE -I$DB2PATH/include -c $1.C if [[ -f $1".sqc" ]] then # Link the program with utilemb.o CC $IRIX_OBJECT_MODE -o $1 $1.o utilemb.o -L$DB2_LIBPATH -rpath $DB2_LIBPATH -lm -ldb2 else # Link the program with utilapi.o CC $IRIX_OBJECT_MODE -o $1 $1.o utilapi.o -L$DB2_LIBPATH -rpath $DB2_LIBPATH -lm -ldb2 fi
bldapp のコンパイルおよびリンク・オプション |
---|
コンパイル・オプション
|
リンク・オプション
他のコンパイラー・オプションについては、コンパイラーの資料をご覧ください。
|
ソース・ファイル updat.sqC からサンプル・プログラム updat を構築するには、 データベースのパラメーターと、 データベースが置かれているインスタンスのユーザー ID とパスワードを組み込みます。
bldapp updat database userid password
結果として実行可能ファイル updat が作成されます。 この実行可能ファイルを実行するには、実行可能ファイル名、データベース名、 およびデータベースが置かれているインスタンスのユーザー ID とパスワードを入力します。
updat database userid password
ストアード・プロシージャーは、 データベースにアクセスしてクライアント・アプリケーションに情報を戻すプログラムです。 ストアード・プロシージャーのコンパイルと保管は、サーバー上で行われます。 なお、サーバーは別のプラットフォームで実行します。
DB2 がサポートするプラットフォームのサーバー上で組み込み SQL ストアード・プロシージャー spserver を作成する場合は、 本書のそのプラットフォーム用の『アプリケーションの構築』という章を参照してください。 DB2 クライアントからアクセスできる他のサーバーについては、 "サポートされるサーバー"を参照してください。
ストアード・プロシージャー spserver を作成したなら、 そのストアード・プロシージャーを呼び出すクライアント・アプリケーションを構築できます。 spclient は、スクリプト・ファイル bldapp を使用して、 ソース・ファイル spclient.sqC から作成することができます。 詳細については、"DB2 API と組み込み SQL アプリケーション"を参照してください。
ストアード・プロシージャーを呼び出すには、実行可能ファイル名、データベース名、 およびデータベースが置かれているインスタンスのユーザー ID とパスワードを入力して、 クライアント・アプリケーションを実行します。
spclient database userid password
クライアント・アプリケーションは共用ライブラリー spserver にアクセスし、 様々なストアード・プロシージャー関数をサーバー・データベース上で実行します。 ストアード・プロシージャーは、出力をクライアント・アプリケーションに戻します。
ユーザー定義関数 (UDF) とは、ユーザー独自のスカラー関数のことであり、 この関数はサーバー上でコンパイルされ、サーバー上に保管されます。 なお、サーバーは別のプラットフォームで実行します。 DB2 がサポートする各プラットフォームのサーバー上でユーザー定義関数 udfsrv を作成する場合は、 本書のそのプラットフォーム用の『アプリケーションの構築』という章を参照してください。 DB2 クライアントからアクセスできる他のサーバーについては、 "サポートされるサーバー"を参照してください。
udfsrv を構築したなら、スクリプト・ファイル bldapp を使用して、 それを呼び出すための組み込み SQL クライアント・アプリケーション udfcli を sqllib/samples/cpp のソース・ファイル udfcli.sqC から構築することができます。 詳細については、"DB2 API と組み込み SQL アプリケーション"を参照してください。
UDF プログラムを呼び出すには、実行可能ファイル名、データベース名、 およびデータベースが置かれているインスタンスのユーザー ID とパスワードを入力して、 呼び出しアプリケーションを実行します。
udfcli database userid password
この呼び出しアプリケーションは、 udfsrv ライブラリーから ScalarUDF 関数を呼び出します。
Silicon Graphics IRIX 上のマルチスレッド・アプリケーションは、 -ldb2_th および -lpthread リンク・オプションを使用して、 o32 か n32 のオブジェクト・タイプに対応した POSIX スレッド・バージョンの DB2 ライブラリーにリンクさせる必要があります。
sqllib/samples/cpp のスクリプト・ファイル bldmt には、 組み込み SQL マルチスレッド・プログラムを作成するためのコマンドが含まれています。
第 1 パラメーター $1 には、ソース・ファイルの名前を指定します。 第 2 パラメーター $2 には、接続先のデータベースの名前を指定します。 パラメーター $3 にはそのデータベースのユーザー ID を、 $4 にはパスワードを指定します。
#! /bin/ksh # bldmt script file -- Silicon Graphics IRIX # Builds a C++ multi-threaded embedded SQL program # Usage: bldmt <prog_name> [ <db_name> [ <userid> <password> ]] # Set DB2PATH to where DB2 will be accessed. # The default is the standard instance path. DB2PATH=$HOME/sqllib # To compile with n32 object support, uncomment the following line. # IRIX_OBJECT_MODE=-n32 if [ "$IRIX_OBJECT_MODE" = "-n32" ] ; then # Link with db2 n32 object type libraries. DB2_LIBPATH=$DB2PATH/lib32 else # Link with db2 o32 object type libraries. DB2_LIBPATH=$DB2PATH/lib fi # Precompile and bind the program. embprep $1 $2 $3 $4 # Compile the program. CC $IRIX_OBJECT_MODE -I$DB2PATH/include -c $1.C # Link the program. CC $IRIX_OBJECT_MODE -o $1 $1.o -L$DB2_LIBPATH -rpath $DB2_LIBPATH -lm -ldb2_th -lpthread
上記の -ldb2_th および -lpthread リンク・オプションや、 リンクされているユーティリティー・ファイルがないという点だけでなく、 残りのコンパイルとリンクのオプションも、 組み込み SQL スクリプト・ファイル bldapp で使用されているものと同じです。 これらのオプションについては、"DB2 API と組み込み SQL アプリケーション"を参照してください。
ソース・ファイル thdsrver.sqC からサンプル・プログラム thdsrver を構築するには、 データベースのパラメーターと、 データベースが置かれているインスタンスのユーザー ID とパスワードを指定するパラメーターを組み込みます。
bldmt thdsrver database userid password
結果として、実行可能ファイル thdsrver が作成されます。
この実行可能ファイルを sample データベースに対して実行するには、 実行可能ファイル名、データベース名、 およびデータベースが置かれているインスタンスのユーザー ID とパスワードを入力します。
thdsrver database userid password