例 - ODBC Driver for Teradata

ODBC Driver for Teradata® ユーザー ガイド

Product
ODBC Driver for Teradata
Release Number
17.20
Published
2022年6月
Language
日本語
Last Update
2022-08-22
dita:mapPath
ja-JP/uqj1639470627591.ditamap
dita:ditavalPath
ja-JP/nkw1500504256726.ditaval
dita:id
B035-2526
Product Category
Teradata Tools and Utilities

次の例は、OutputAsResultSetオプションがNに設定されている場合に、ストアド プロシージャのCALL文をODBCアプリケーションで使用する方法を説明したものです。

ストアド プロシージャspODBCにはOUTタイプのp1、INOUTタイプのp2、INタイプのp3の3つのパラメータがあると仮定します。

“?”文字は、IN引数、OUT変数、INOUT引数のプレースホルダーとして動作します。“?”文字のプレースホルダー引数は、SQLBindParameter ODBC SDK API呼び出しを使用して、アプリケーションのローカル変数にバインドする必要があります。

{
char *request = "CALL spODBC(?, ?, ?)";
...
SQLBindParameter(..., 1, SQL_PARAM_OUTPUT, ..., SQLINTEGER,
..., ..., AppVar1, sizeof(AppVar1), ...);
SQLBindParameter(..., 2, SQL_PARAM_INPUT_OUTPUT, ..., SQLINTEGER,
..., ..., AppVar2, sizeof(AppVar2), ...);
SQLBindParameter(..., 3, SQL_PARAM_INPUT,..,SQLINTEGER, ...,...,AppVar3,
sizeof(AppVar3),...);
...
SQLExecDirect(hstmt, request);
...
}

次のような場合に当てはまります。

AppVar1、AppVar2、およびAppVar3は、ODBCアプリケーションに特有のINTEGERデータ型ローカル変数で、要求の送信中は入力データ、結果の受信中は出力データなど、特定の値を表わします。

SQLBindParameter()の第2引数は、1から始めて左から右へ順番に付けた、"?"の番号です。

出力パラメータ値を取り出す方法:

INOUTおよびOUTパラメータの値は、SQLFetch API呼び出しの後に(SQLBindParameterを使用して設定される)ローカル変数を直接出力するか、後にSQLFetch API呼び出しが続くSQLBindCol ODBC SDK APIを使用して、応答内容から取得する必要があります。

SQLBindCol(..., 1, ..., AppVar1, ..., ...);
SQLBindCol(..., 2, ..., AppVar2, ..., ...);

次のような場合に当てはまります。

SQLBindCol()の第2引数は、1から始めて左から右へ順番に付けた、結果セットのパラメータ番号です。

INOUTおよびOUTパラメータの値は、後にSQLGetdata APIが続くSQLFetch ODBC SDK APIを使用して、応答内容から取得することもできます。