この節では以下のトピックを取り上げています。
sqllib/samples/cpp スレッド・ライブラリーにあるビルド・ファイル bldapp には、 DB2 API と組み込み SQL アプリケーションを構築するコマンドが含まれています。
第 1 パラメーター $1 には、ソース・ファイルの名前を指定します。 必要なパラメーターはこのパラメーターだけであり、 組み込み SQL を含まない DB2 API プログラムに必要な唯一のパラメーターです。 組み込み SQL プログラムを作成するためにはデータベースへの接続が必要なため、 3 つのパラメーターがオプションとして用意されています。 2 番目のパラメーターは $2 で、 接続するデータベースの名前を指定します。 3 番目のパラメーターは $3 で、 データベースのユーザー ID を指定します。 そしてもう 1 つが $4 で、 データベースのパスワードを指定します。
組み込み SQL プログラムの場合、bldapp は、 プリコンパイルおよびバインドのファイル embprep にパラメーターを渡します。 データベース名が指定されない場合は、 デフォルトの sample データベースが使用されます。 なお、ユーザー ID とパスワードのパラメーターは、 プログラムを構築するインスタンスとデータベースのあるインスタンスが異なる場合にのみ必要になります。
#! /bin/ksh # bldapp script file -- AIX # 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 64 bit programs, uncomment the following line. # BUILD_64BIT=true if [ "$BUILD_64BIT" != "" ] then CFLAGS_64=-q64 else CFLAGS_64= 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. xlC $CFLAGS_64 -I$DB2PATH/include -c utilemb.C else # Compile the utilapi.C error-checking utility. xlC $CFLAGS_64 -I$DB2PATH/include -c utilapi.C fi # Compile the program. xlC $CFLAGS_64 -I$DB2PATH/include -c $1.C if [[ -f $1".sqC" ]] then # Link the program with utilemb.o xlC $CFLAGS_64 -o $1 $1.o utilemb.o -ldb2 -L$DB2PATH/lib else # Link the program with utilapi.o xlC $CFLAGS_64 -o $1 $1.o utilapi.o -ldb2 -L$DB2PATH/lib fi
bldapp のコンパイルおよびリンク・オプション |
---|
コンパイル・オプション
|
リンク・オプション
他のコンパイラー・オプションについては、
コンパイラーの資料をご覧ください。
|
ソース・ファイル client.C から非組み込み SQL サンプル・プログラム client を作成するには、 次のように入力します。
bldapp client
結果として、実行可能ファイル client が作成されます。 sample データベースに対してこの実行可能ファイルを実行するには、 次のように入力します。
client
ソース・ファイル updat.sqC から組み込み SQL アプリケーション updat を構築する方法には、 次の 3 つがあります。
bldapp updat
bldapp updat database
bldapp updat database userid password
結果として、実行可能ファイル updat が作成されます。
この組み込み SQL アプリケーションを実行する方法には次の 3 つがあります。
updat
updat database
updat database userid password
注: | "UDF およびストアード・プロシージャーに関する C++ 考慮事項"にある、 C++ のストアード・プロシージャーの構築に関する情報を参照してください。 |
sqllib/samples/cpp にあるスクリプト・ファイル bldsrv には、 ストアード・プロシージャーを構築するためのコマンドが含まれています。 スクリプト・ファイルは、 ストアード・プロシージャーを共用ライブラリーの中にコンパイルしますが、 それはクライアント・アプリケーションから呼び出すことができます。
第 1 パラメーター $1 には、ソース・ファイルの名前を指定します。 第 2 パラメーター $2 には、 共用ライブラリーへの入り口点になっているストアード・プロシージャー関数を指定します。 第 3 パラメーター $3 には、 接続先のデータベースの名前を指定します。 ストアード・プロシージャーは、 必ずデータベースが常駐するインスタンスに構築される必要があるため、 ユーザー ID やパスワードを指定するパラメーターは必要ありません。
最初の 2 つのパラメーター (ソース・ファイル名と入り口点) だけが必須です。 データベース名は任意で指定します。 データベース名を指定しない場合、 プログラムはデフォルトの sample データベースを使用します。
#! /bin/ksh # bldsrv script file -- AIX # Builds a C++ stored procedure # Usage: bldsrv <prog_name> [ <db_name> ] # Set DB2PATH to where DB2 will be accessed. # The default is the standard instance path. DB2PATH=$HOME/sqllib # Precompile and bind the program. embprep $1 $2 # To compile 64 bit programs, uncomment the following line. # BUILD_64BIT=true if [ "$BUILD_64BIT" != "" ] then CFLAGS_64=-q64 LFLAGS_64=-X64 else CFLAGS_64= LFLAGS_64= fi # Compile the program. xlC $CFLAGS_64 -I$DB2PATH/include -c $1.C # Link using export file $1.exp, creating shared library $1 makeC++SharedLib $LFLAGS_64 -p 1024 -o $1 $1.o -L$DB2PATH/lib -ldb2 -E $1.exp # Copy the shared library to the sqllib/function subdirectory. # Note: the user must have write permission to this directory. rm -f $DB2PATH/function/$1 cp $1 $DB2PATH/function
bldsrv のコンパイルおよびリンク・オプション |
---|
コンパイル・オプション
|
リンク・オプション
他のコンパイラー・オプションについては、
コンパイラーの資料をご覧ください。
|
ソース・ファイル spserver.sqC からサンプル・プログラム spserver を構築する場合、 sample データベースに接続しているときは、ビルド・ファイル名、プログラム名、 および共用ライブラリーの入り口点になっているストアード・プロシージャー関数の名前を入力します。
bldsrv spserver outlanguage
他のデータベースに接続しているときは、 さらにデータベース名も入力します。
bldsrv spserver outlanguage database
スクリプト・ファイルは、 共用ライブラリーをサーバー上の sqllib/function というパスにコピーします。
次に、サーバー上で spcreate.db2 スクリプトを実行して、 ストアード・プロシージャーをカタログ化します。 まず、データベースに接続します。
db2 connect to sample
ストアード・プロシージャーがすでにカタログ化されている場合は、 次のコマンドを使用してそれらをドロップすることができます。
db2 -td@ -vf spdrop.db2
その後、次のコマンドでストアード・プロシージャーをカタログ化します。
db2 -td@ -vf spcreate.db2
カタログ化が終了したら、データベースを 1 度停止してから再始動し、 新しい共用ライブラリーが認識されるようにします。 必要であれば、共用ライブラリーにファイル・モードを設定して、 DB2 インスタンスからアクセスできるようにします。
共用ライブラリー spserver を作成したなら、 クライアント・アプリケーション spclient を構築することができます。 これは、共用ライブラリー内のストアード・プロシージャーを呼び出すアプリケーションです。
spclient は、 スクリプト・ファイル bldapp を使用して構築することができます。 詳細については、 "DB2 API と組み込み SQL アプリケーション"を参照してください。
ストアード・プロシージャーを呼び出すためには、 次のように入力してサンプル・クライアント・アプリケーションを実行します。
spclient database userid password
ここで、それぞれは次のものを表します。
クライアント・アプリケーションは共用ライブラリー spserver にアクセスし、 様々なストアード・プロシージャー関数をサーバー・データベース上で実行します。 この出力は、クライアント・アプリケーションに戻されます。
注: | "UDF およびストアード・プロシージャーに関する C++ 考慮事項"にある、 C++ UDF の構築に関する情報を参照してください。 |
スクリプト・ファイル bldudf は sqllib/samples/cpp にあり、 UDF を作成するためのコマンドが含まれています。 UDF に組み込み SQL ステートメントを含めることはできません。 したがって、UDF プログラムを作成する際に、データベースへの接続、 プログラムのプリコンパイル、およびバインドは必要ありません。
パラメーター $1 には、ソース・ファイルの名前を指定します。 パラメーター $2 には、 共用ライブラリーへの入り口点になっているストアード・プロシージャー関数を指定します。 スクリプト・ファイルは、 ソース・ファイル名 $1 を共用ライブラリー名として使います。
#! /bin/ksh # bldudf script file -- AIX # Builds a C++ UDF library # Usage: bldudf <prog_name> # Set DB2PATH to where DB2 will be accessed. # The default is the standard instance path. DB2PATH=$HOME/sqllib # To compile 64 bit programs, uncomment the following line. # BUILD_64BIT=true if [ "$BUILD_64BIT" != "" ] then CFLAGS_64=-q64 LFLAGS_64=-X64 else CFLAGS_64= LFLAGS_64= fi # Compile the program. if [[ -f $1".c" ]] then xlC $CFLAGS_64 -I$DB2PATH/include -c $1.c elif [[ -f $1".C" ]] then xlC $CFLAGS_64 -I$DB2PATH/include -c $1.C fi # Link using export file $1.exp, creating shared library $1 makeC++SharedLib $LFLAGS_64 -p 1024 -o $1 $1.o -L$DB2PATH/lib -ldb2 -ldb2apie -E $1.exp # Copy the shared library to the sqllib/function subdirectory. # Note: the user must have write permission to this directory. rm -f $DB2PATH/function/$1 cp $1 $DB2PATH/function
bldudf のコンパイルおよびリンク・オプション |
---|
コンパイル・オプション
|
リンク・オプション
他のコンパイラー・オプションについては、コンパイラーの資料をご覧ください。
UDF の作成に関する詳細については、
"UDF および CREATE FUNCTION ステートメント"を参照してください。
|
ソース・ファイル udfsrv.c からユーザー定義関数プログラム udfsrv を構築するには、 そのビルド・ファイル名、プログラム名、および共用ライブラリーへの入り口点になっている UDF 関数を入力します。
bldudf udfsrv ScalarUDF
スクリプト・ファイルは、 サーバー上の sqllib/function というパスに UDF をコピーします。
必要であれば、UDF にファイル・モードを設定して DB2 インスタンスがそれを実行できるようにしてください。
udfsrv を作成したなら、 それを呼び出すクライアント・アプリケーション udfcli を構築できます。 udfcli プログラムは、スクリプト・ファイル bldapp を使用して、 sqllib/samples/cpp にあるソース・ファイル udfcli.sqC から作成します。 詳細については、"DB2 API と組み込み SQL アプリケーション"を参照してください。
UDF を呼び出すには、次の実行可能ファイル名を入力して、 サンプルの呼び出しアプリケーションを実行します。
udfcli
この呼び出しアプリケーションは、 udfsrv ライブラリーの ScalarUDF 関数を呼び出します。
AIX バージョン 4 上で実行する C++ マルチスレッド・アプリケーションは、 xlc コンパイラーの代わりに xlc_r コンパイラーを、 C の場合は、 xlC コンパイラーの代わりに xlC_r コンパイラーを使用して、 コンパイルおよびリンクする必要があります。 32 ビットのアプリケーションに AIX 4.3 以降を使用する場合は、 xlC_r7 コンパイラーまたは xlc_r7 コンパイラーを使用してください。 _r バージョン (および他のマルチスレッド・アプリケーションのフロントエンド) では、 マルチスレッド用のコンパイルを定義している適当なプリプロセッサーが設定され、 適当なスレッド・ライブラリー名がリンカーに付けられます。
マルチスレッド・コンパイラーのフロントエンドを使用したコンパイラーおよびリンク・フラグの設定についてのさらに詳しい情報は、 /etc/xlC.cfg (3.1 コンパイラーを使用する場合)、 または /etc/ibmcxx.cfg (3.6 以降のコンパイラーを使用する場合) を参照してください。
スクリプト・ファイル bldmt は sqllib/samples/cpp にあり、 組み込み SQL マルチスレッド・プログラムを作成するためのコマンドが含まれています。
第 1 パラメーター $1 には、ソース・ファイルの名前を指定します。 第 2 パラメーター $2 には、 接続先のデータベースの名前を指定します。 パラメーター $3 はそのデータベースのユーザー ID を、 $4 はパスワードを指定します。 第 1 パラメーター (ソース・ファイル名) だけが必須です。 データベース名、ユーザー ID、および、パスワードは任意指定です。 データベース名を指定しない場合、 プログラムはデフォルトの sample データベースを使用します。
#! /bin/ksh # bldmt script file -- AIX # 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 # Precompile and bind the program. embprep $1 $2 $3 $4 # To compile 64 bit programs, uncomment the following line. # BUILD_64BIT=true if [ "$BUILD_64BIT" != "" ] then CFLAGS_64=-q64 else CFLAGS_64= fi # Compile the program. xlC_r $CFLAGS_64 -I$DB2PATH/include -c $1.C # Link the program. xlC_r $CFLAGS_64 -o $1 $1.o -L$DB2PATH/lib -ldb2
上記の xlC_r コンパイラーや、 リンクされているユーティリティー・ファイルがないという点だけでなく、 コンパイルおよびリンク・オプションも、 組み込み SQL スクリプト・ファイル bldapp で使用されているものと同じです。 これらのオプションについては、 "DB2 API と組み込み SQL アプリケーション"を参照してください。
ソース・ファイル thdsrver.sqC からマルチスレッド・サンプル・プログラム thdsrver を作成するには、 次のように入力します。
bldmt thdsrver
結果として、実行可能ファイル thdsrver が作成されます。 sample データベースに対してこの実行可能ファイルを実行するには、 次の実行可能ファイル名を入力します。
thdsrver