LOBデータの挿入 - 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

LOBデータを挿入するサンプル ソース コードを以下に示します。

最初のステップは、パラメータ付きinsert文の準備です。最初のパラメータは、この行の識別に使用される数値キーです。2つ目のパラメータは、BLOBデータです。

2つ目のパラメータは、SQL_LONGVARBINARYデータ型として指定されます。

LOBデータの長さは、SQL_LEN_DATA_AT_EXECマクロの呼び出しで指定されます。

SQLINTEGER	 id;
SQLCHAR     image[IMAGEPART_LEN ];
SQLINTEGER  cbid = 0;
SQLUINTEGER cbimage = 0;
SQLRETURN   retcode;

retcode = SQLPrepare(hstmt,
                    (SQLCHAR *)"insert into blobtable (id, image) values (?, ?)",
                    SQL_NTS);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
          // Bind the parameters.
    retcode = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT,
                               SQL_C_SLONG, SQL_INTEGER, 10, 0, &id, 0, &cbid);
    retcode = SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR,
                               SQL_LONGVARBINARY, LOBSIZE, 0, (SQLPOINTER) 2, 0,
                               &cbimage);
    //Set the 1. parameter (id)
	 id = 1001;
    //Set the 2. parameter (image)
    cbimage = SQL_LEN_DATA_AT_EXEC(0);
SQL_LEN_DATA_AT_EXEC(0)のように長さを0に設定すると、長さが不明であるという意味になります。

次のステップは、データの挿入です。LOBデータは非常に大きい可能性があるため、分割されて挿入されます。

     // Execute the request
     retcode = SQLExecute(hstmt);

     // For the data-at-execution parameter (2. parameter)
     // call SQLParamData and SQLPutData repeatedly
     // to insert the BLOB data in parts.
     while (retcode == SQL_NEED_DATA) {
         retcode = SQLParamData(hstmt, NULL);
         while (GetUserData(image, IMAGEPART_LEN )) {
             SQLPutData(hstmt, image, IMAGEPART_LEN );
         }
     }
}