この節では以下のトピックを取り上げています。
sqllib/samples/cli にあるスクリプト・ファイル bldcli には、 DB2 CLI プログラムを作成するためのコマンドが入っています。 パラメーター $1 には、ソース・ファイルの名前を指定します。
これは、組み込み SQL を含んでいない CLI プログラム用の唯一の必須パラメーターです。 組み込み SQL プログラムを作成するためにはデータベースへの接続が必要なため、 オプションとして 3 つのパラメーターが用意されています。 2 番目のパラメーターは $2 で、 接続するデータベースの名前を指定します。 3 番目のパラメーターは $3 で、 データベースのユーザー ID を指定します。 そしてもう 1 つが $4 で、 データベースのパスワードを指定します。
プログラムに組み込み SQL が含まれている場合 (拡張子が .sqc の場合) は、 embprep スクリプトが呼び出されてそのプログラムをプリコンパイルし、 .c という拡張子のプログラム・ファイルを生成します。
#! /bin/ksh # bldcli script file -- Solaris # Builds a DB2 CLI program. # Usage: bldcli <prog_name> [ <db_name> [ <userid> <password> ]] # Set DB2PATH to where DB2 will be accessed. # The default is the standard instance path. DB2PATH=$HOME/sqllib # If an embedded SQL program, precompile and bind it. if [[ -f $1".sqc" ]] then embprep $1 $2 $3 $4 fi # To compile 64 bit programs, uncomment the following line. # BUILD_64BIT=true if [ "$BUILD_64BIT" != "" ] then CFLAGS_64=-xarch=v9 else CFLAGS_64= fi # Compile the error-checking utility. cc $CFLAGS_64 -I$DB2PATH/include -c utilcli.c # Compile the program. cc $CFLAGS_64 -I$DB2PATH/include -c $1.c # Link the program. cc $CFLAGS_64 -o $1 $1.o utilcli.o -L$DB2PATH/lib -R$DB2PATH/lib -ldb2
bldcli のコンパイルおよびリンク・オプション |
---|
コンパイル・オプション
|
リンク・オプション
他のコンパイラー・オプションについては、
コンパイラーの資料をご覧ください。
|
ソース・ファイル tbinfo.c からサンプル・プログラム tbinfo を作成するには、 次のように入力します。
bldcli tbinfo
結果として、実行可能ファイル tbinfo が作成されます。 この実行可能ファイルを実行するには、次の実行可能名を入力します。
tbinfo
ソース・ファイル dbusemx.sqc から組み込み SQL アプリケーション dbusemx を作成する場合、 次の 3 つの方法があります。
bldcli dbusemx
bldcli dbusemx database
bldcli dbusemx database userid password
結果として、実行可能ファイル dbusemx が作成されます。
この組み込み SQL アプリケーションを実行する方法には次の 3 つがあります。
dbusemx
dbusemx database
dbusemx database userid password
DB2 には、CLI サンプル・プログラムが含まれています。 このサンプル・プログラムは、DB2 API を使用してデータベースを作成およびドロップし、 CLI 機能を複数のデータベースで使用する方法を示します。 DB2 API を使用するサンプルは、 表 7 にある CLI サンプル・プログラムの説明の中に示されています。
sqllib/samples/cli にあるスクリプト・ファイル bldapi には、 DB2 API を使用して DB2 CLI プログラムを作成するためのコマンドが入っています。 このファイルは、 データベースを作成およびドロップするための DB2 API が入った utilapi ユーティリティー・ファイルでコンパイルおよびリンクします。 この点が、 このスクリプト・ファイルと bldcli スクリプトの唯一の違いです。 bldapi と bldcli の両方に共通のコンパイルおよびリンク・オプションについては、 "DB2 CLI アプリケーション" を参照してください。
ソース・ファイル dbmconn.c からサンプル・プログラム dbmconn を作成するには、 次のようにします。
bldapi dbmconn
結果として、実行可能ファイル dbmconn が作成されます。 この実行可能ファイルを実行するには、次の実行可能ファイル名を入力します。
dbmconn
sqllib/samples/cli にあるスクリプト・ファイル bldclisp には、 DB2 CLI ストアード・プロシージャーを作成するためのコマンドが入っています。 パラメーター $1 には、ソース・ファイルの名前を指定します。
#! /bin/ksh # bldclisp script file -- Solaris # Builds a DB2 CLI stored procedure. # Usage: bldclisp <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=-xarch=v9 else CFLAGS_64= fi # Compile the error-checking utility. cc $CFLAGS_64 -Kpic -I$DB2PATH/include -c utilcli.c # Compile the program. cc $CFLAGS_64 -Kpic -I$DB2PATH/include -c $1.c # Link the program. cc $CFLAGS_64 -G -o $1 $1.o utilcli.o -L$DB2PATH/lib -R$DB2PATH/lib -ldb2 # 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
bldclisp のコンパイルおよびリンク・オプション |
---|
コンパイル・オプション
|
リンク・オプション
他のコンパイラー・オプションについては、
コンパイラーの資料をご覧ください。
|
ソース・ファイル spserver.c からサンプル・プログラム spserver を作成するには、 次のように入力します。
bldclisp spserver
このスクリプト・ファイルは、 パス sqllib/function 内のサーバーにストアード・プロシージャーをコピーします。
次に、サーバー上で spcreate.db2 スクリプトを実行して、 ストアード・プロシージャーをカタログ化します。 まず、データベースに接続します。
db2 connect to sample
ストアード・プロシージャーがすでにカタログ化されている場合は、 次のコマンドを使用してそれらをドロップすることができます。
db2 -td@ -vf spdrop.db2
その後、次のコマンドでストアード・プロシージャーをカタログ化します。
db2 -td@ -vf spcreate.db2
カタログ化が終了したら、データベースを 1 度停止してから再始動し、 新しい共用ライブラリーが認識されるようにします。 必要であれば、共用ライブラリーにファイル・モードを設定して、 DB2 インスタンスからアクセスできるようにします。
ストアード・プロシージャー spserver を作成したなら、 そのストアード・プロシージャーを呼び出す CLI クライアント・アプリケーション spclient を構築できます。
spclient は、スクリプト・ファイル bldcli を使用して構築することができます。 詳細については、"DB2 CLI アプリケーション"を参照してください。
ストアード・プロシージャーを呼び出すためには、 次のように入力してサンプル・クライアント・アプリケーションを実行します。
spclient database userid password
ここで、それぞれは次のものを表します。
クライアント・アプリケーションは、 ストアード・プロシージャー・ライブラリー spserver にアクセスし、 サーバー・データベース上のいくつかのストアード・プロシージャー関数を実行します。 出力は、クライアント・アプリケーションに戻されます。
スクリプト・ファイル bldapp は sqllib/samples/c にあり、 DB2 アプリケーション・プログラムを作成するためのコマンドが含まれています。
第 1 パラメーター $1 には、ソース・ファイルの名前を指定します。 これは組み込み SQL を含まないプログラムに必要な唯一のパラメーターです。 組み込み SQL プログラムを作成するためにはデータベースへの接続が必要なため、 オプションとして 3 つのパラメーターが用意されています。 2 番目のパラメーターは $2 で、 接続するデータベースの名前を指定します。 3 番目のパラメーターは $3 で、 データベースのユーザー ID を指定します。 そしてもう 1 つが $4 で、 データベースのパスワードを指定します。
組み込み SQL プログラムの場合、bldapp は、 プリコンパイルおよびバインドのファイル embprep にパラメーターを渡します。 データベース名を指定しない場合は、 デフォルトの sample データベースを使用します。 なお、ユーザー ID とパスワードのパラメーターは、 プログラムを構築するインスタンスとデータベースのあるインスタンスが異なる場合にのみ必要になります。
#! /bin/ksh # bldapp script file -- Solaris # 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=-xarch=v9 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. cc $CFLAGS_64 -I$DB2PATH/include -c utilemb.c else # Compile the utilapi.c error-checking utility. cc $CFLAGS_64 -I$DB2PATH/include -c utilapi.c fi # Compile the program. cc $CFLAGS_64 -I$DB2PATH/include -c $1.c if [[ -f $1".sqc" ]] then # Link the program with utilemb.o cc $CFLAGS_64 -o $1 $1.o utilemb.o -L$DB2PATH/lib -R$DB2PATH/lib -ldb2 else # Link the program with utilapi.o cc $CFLAGS_64 -o $1 $1.o utilapi.o -L$DB2PATH/lib -R$DB2PATH/lib -ldb2 fi
bldapp のコンパイルおよびリンク・オプション |
---|
コンパイル・オプション
|
リンク・オプション
他のコンパイラー・オプションについては、
コンパイラーの資料をご覧ください。
|
ソース・ファイル client.c から DB2 API 非組み込み SQL サンプル・プログラム client を構築するには、 次のようにします。
bldapp client
結果として、実行可能ファイル client が作成されます。
この実行可能ファイルを実行するには、ファイル名を入力します。
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
スクリプト・ファイル bldsrv は sqllib/samples/c にあり、 組み込み SQL ストアード・プロシージャーを作成するためのコマンドが含まれています。 スクリプト・ファイルは、 ストアード・プロシージャーを共用ライブラリーの中にコンパイルしますが、 それはクライアント・アプリケーションから呼び出すことができます。
第 1 パラメーター $1 には、ソース・ファイルの名前を指定します。 第 2 パラメーター $2 には、 接続先のデータベースの名前を指定します。 ストアード・プロシージャーは、 必ずデータベースが常駐するインスタンスに構築される必要があるため、 ユーザー ID やパスワードを指定するパラメーターはありません。
最初のパラメーター (ソース・ファイル名) だけが、必須です。 データベース名は任意で指定します。 データベース名を指定しない場合、 プログラムはデフォルトの sample データベースを使用します。
#! /bin/ksh # bldsrv script file -- Solaris # 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=-xarch=v9 else CFLAGS_64= fi # Compile the program. cc $CFLAGS_64 -Kpic -I$DB2PATH/include -c $1.c # Link the program and create a shared library cc $CFLAGS_64 -G -o $1 $1.o -L$DB2PATH/lib -R$DB2PATH/lib -ldb2 # 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 のコンパイルおよびリンク・オプション |
---|
コンパイル・オプション
|
リンク・オプション
他のコンパイラー・オプションについては、
コンパイラーの資料をご覧ください。
|
sample データベースに接続している場合、 ソース・ファイル spserver.sqc からサンプル・プログラム spserver を作成するには、 次のように入力します。
bldsrv spserver
他のデータベースに接続しているときは、 さらにデータベース名も入力します。
bldsrv spserver 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 にアクセスし、 様々なストアード・プロシージャー関数をサーバー・データベース上で実行します。 出力は、クライアント・アプリケーションに戻されます。
スクリプト・ファイル bldudf は sqllib/samples/c にあり、 UDF を作成するためのコマンドが含まれています。 UDF には組み込み SQL ステートメントは含まれていません。 したがって、データベースへの接続、またはプログラムのプリコンパイルおよびバインドは行いません。
パラメーター $1 には、ソース・ファイルの名前を指定します。 スクリプト・ファイルは、そのソース・ファイル名を共用ライブラリー名として使います。
#! /bin/ksh # bldudf script file -- Solaris # 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=-xarch=v9 else CFLAGS_64= fi # Compile the program. cc $CFLAGS_64 -Kpic -I$DB2PATH/include -c $1.c # Link the program and create a shared library. cc $CFLAGS_64 -G -o $1 $1.o -L$DB2PATH/lib -R$DB2PATH/lib -ldb2 -ldb2apie # 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 のコンパイルおよびリンク・オプション |
---|
コンパイル・オプション
|
リンク・オプション
他のコンパイラー・オプションについては、
コンパイラーの資料をご覧ください。
|
ユーザー定義関数プログラム udfsrv をソース・ファイル udfsrv.c から作成するには、 次のように入力します。
bldudf udfsrv
スクリプト・ファイルは、 UDF を sqllib/function ディレクトリーにコピーします。
必要であれば、UDF にファイル・モードを設定してクライアント・アプリケーションから実行できるようにします。
udfsrv を作成したなら、 それを呼び出すクライアント・アプリケーション udfcli を構築できます。 このプログラムの DB2 CLI および組み込み SQL バージョンが提供されています。
DB2 CLI udfcli プログラム は、スクリプト・ファイル bldcli を使用して、 sqllib/samples/cli にあるソース・ファイル udfcli.c から作成できます。 詳細については、"DB2 CLI アプリケーション"を参照してください。
組み込み SQL udfcli プログラムは、 スクリプト・ファイル bldapp を使用して、 sqllib/samples/c にあるソース・ファイル udfcli.sqc から作成できます。 詳細については、 "DB2 API と組み込み SQL アプリケーション"を参照してください。
UDF を呼び出すには、次の実行可能名を入力して、 サンプルの呼び出しアプリケーションを実行します。
udfcli
この呼び出しアプリケーションは、 udfsrv ライブラリーから ScalarUDF 関数を呼び出します。
Solaris 上で SPARCompiler C を使用するマルチスレッド・アプリケーションは、 -mt でコンパイルおよびリンクする必要があります。 これは、-D_REENTRANT をプリプロセッサーに渡し、 -lthread をリンカーに渡します。 POSIX スレッドには、リンカーに渡すための -lpthread も必要です。 さらに、コンパイラー・オプション -D_POSIX_PTHREAD_SEMANTICS を使うことによって、 POSIX 変形関数 (getpwnam_r() など) を使用できます。
スクリプト・ファイル bldmt は sqllib/samples/c にあり、 組み込み SQL マルチスレッド・プログラムを作成するためのコマンドが含まれています。
第 1 パラメーター $1 には、ソース・ファイルの名前を指定します。 第 2 パラメーター $2 には、 接続先のデータベースの名前を指定します。 第 3 パラメーター $3 にはそのデータベースのユーザー ID を、 また $4 にはパスワードを指定します。 第 1 パラメーター (ソース・ファイル名) だけが必須です。 データベース名、ユーザー ID、およびパスワードは任意指定です。 データベース名を指定しない場合は、 プログラムはデフォルトの sample データベースを使用します。
#! /bin/ksh # bldmt script file -- Solaris # 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=-xarch=v9 else CFLAGS_64= fi # Compile the program. cc $CFLAGS_64 -mt -D_POSIX_PTHREAD_SEMANTICS -I$DB2PATH/include -c $1.c # Link the program. cc $CFLAGS_64 -mt -o $1 $1.o -L$DB2PATH/lib -R$DB2PATH/lib -ldb2 -lpthread
上記の -mt、-D_POSIX_PTHREAD_SEMANTICS、-lpthread の各オプションだけでなく、 残りのコンパイルとリンクのオプションも組み込み SQL スクリプト・ファイル bldapp で使われているものと同じです。 これらのオプションについては、 "DB2 API と組み込み SQL アプリケーション"を参照してください。
ソース・ファイル thdsrver.sqc からサンプル・プログラム thdsrver を作成するには、 次のように入力します。
bldmt thdsrver
結果として、実行可能ファイル thdsrver が作成されます。 sample データベースに対してこの実行可能ファイルを実行するには、 次のように入力します。
thdsrver