技術情報に関して更新します。(月1更新予定)

2019年4月1日月曜日

SQLCLI について(「select」SQLステートメントの実行2)

0 件のコメント :

a.の方法で行を処理するには

1.  環境ハンドルの取得(SQLAllocEnvまたはSQLAllocHandle)
2.  環境ハンドル内で接続ハンドルの取得(SQLAllocConnectまたはSQLAllocHandle)
3.  データベースへの接続(SQLConnect)
4.  接続ハンドルからステート・メントハンドルの取得(SQLAllocStmtまたはSQLAllocHandle)
5.  ステートメント・ハンドルに対して「selectSQL文を指定(SQLPrepare)
6.  SQL文にパラメータ・マーカが含まれる時は、パラメータ用変数のバインド(SQLBindParameter)
7.  SQL文にパラメータ・マーカが含まれる時は、パラメータ用変数に値を設定
8.  SQL文の実行(SQLExecuteまたはSQLExecDirect)
9.  カラムにプログラム変数を割り当てる(SQLBindCol)
10. 戻り値がSQL_NO_DATA(=100)になるまで「fetchSQL文の実行(SQLFetch)
11. カラムに割り当てたプログラム変数の内容に従った処理
12. ステートメント・ハンドルの解放(SQLFreeStmtまたはSQLFreeHandle)
13. データベースの切断(SQLDisconnect)
14. 接続ハンドルの解放(SQLFreeConnectまたはSQLFreeHandle)
15. 環境ハンドルの解放(SQLFreeEnvまたはSQLFreeHandle)

SQL文にパラメータ・マーカが無い時は、57を省略して、8.SQL文をSQLExecDirectで実行します。

9.でカラムにSQLBindCol  APIを使用してプログラム変数を割り当てる時、SQLCLIには、ゾーン10進数(RPGLEのデータ・タイプS)に対応するSQLデータ・タイプがありませんので、ソーン10進数カラムに対しては、文字変数を割り当てて、RPGLE内のロジックで、カラムの値を使用する時に、%dec関数等で10進数に変換して使用します。

必要があれば、小数点以下の桁数は、SQLDescribeCol APIで取得することができます。

0 件のコメント :

コメントを投稿