CLI の手引きおよび解説書

SQLBuildDataLink - DATALINK 値の作成

目的


仕様: DB2 CLI 5.2   ISO CLI

SQLBuildDataLink() は、入力引き数から作成された DATALINK 値を戻します。

構文

SQLRETURN   SQLBuildDataLink(SQLHSTMT          StatementHandle,
                             SQLCHAR     FAR   *LinkType,
                             SQLINTEGER        LinkTypeLength,
                             SQLCHAR     FAR   *DataLocation,
                             SQLINTEGER        DataLocationLength,
                             SQLCHAR     FAR   *Comment,
                             SQLINTEGER        CommentLength,
                             SQLCHAR     FAR   *DataLinkValue,
                             SQLINTEGER        BufferLength,
                             SQLINTEGER  FAR   *StringLengthPtr);

関数引き数


表 25. SQLBuildDataLink 引き数
データ・タイプ 引き数 使用法 説明
SQLHSTMT StatementHandle 入力 診断レポートのためだけに使用されます。
SQLCHAR * LinkType 入力 常に SQL_DATALINK_URL に設定されます。
SQLINTEGER LinkTypeLength 入力 LinkType 値の長さ。
SQLCHAR * DataLocation 入力 割り当てる完全な URL 値。
SQLINTEGER DataLocationLength 入力 DataLocation 値の長さ。
SQLCHAR * コメント 入力 割り当てるコメントがある場合、そのコメント。
SQLINTEGER CommentLength 入力 Comment 値の長さ。
SQLCHAR * DataLinkValue 出力 関数によって作成される DATALINK 値。
SQLINTEGER BufferLength 入力 DataLinkValue バッファーの長さ。
SQLINTEGER *StringLengthPtr 出力 *DataLinkValue 内に戻すために使用できる総バイト数 (ヌル終止符を除く) を戻すバッファーを指すポインター。 DataLinkValue がヌル・ポインターである場合、長さは戻されません。戻りに使用できるバイト数が BufferLength からヌル終了文字の長さを引いた長さよりも大きい場合、 SQLSTATE 01004 が戻されます。その場合、DATALINK 値を続けて使用すると障害が起こることがあります。

使用法

関数は DATALINK 値の作成に使用されます。ヌル終止符を含むストリングの最大長は、BufferLength バイトになります。

データ・リンクの詳細については、管理の手引き: 計画 を参照してください。

戻りコード

診断

表 26. SQLBuildDataLink() SQLSTATE
SQLSTATE 説明 解説
01000 警告 特定の SQLSTATE がなかった場合のエラーが発生しました。 SQLGetDiagRec() により *MessageText バッファーに返されたエラー・メッセージに、そのエラーと原因が記述されています。
01004 データは切り捨てられました。 *DataLinkValue に戻されるデータは、 BufferLength からヌル終止符の長さを引いた長さに切り捨てられます。 *StringLengthPtr には、切り捨て前のストリング値の長さが戻されます。 (関数は、SQL_SUCCESS_WITH_INFO を戻します。)
HY000 一般エラー。 特定の SQLSTATE がなかった場合のエラーが発生しました。 SQLGetDiagRec() により *MessageText バッファーに返されたエラー・メッセージに、そのエラーと原因が記述されています。
HY001 メモリー割り振り失敗。 DB2 CLI は、この関数の実行または完了をサポートするために必要なメモリーを割り当てられませんでした。
HY090 ストリングまたはバッファー長が無効です。 引き数の 1 つ (LinkTypeLengthDataLocationLength、または CommentLength) に指定された値が 0 より小さく SQL_NTS に等しくないか、または BufferLength が 0 より小さい値です。

制約

なし。

/* ... */
void getattr( SQLHSTMT hStmt,
              SQLSMALLINT AttrType,
              SQLCHAR* DataLink,
              SQLCHAR* Attribute,
              SQLINTEGER BufferLength)
{
    SQLINTEGER  StringLength ;
    SQLRETURN   rc ;
    rc = SQLGetDataLinkAttr(
                              hStmt,
                              AttrType,
                              DataLink,
                              strlen( (char *)DataLink),
                              Attribute,
                              BufferLength,
                             &StringLength
                           ) ;
    CHECK_HANDLE( SQL_HANDLE_STMT, hStmt, rc ) ;
    printf("Attribute #%d) >%s>\n", AttrType, Attribute) ;
    return ;
}
/* ... */
    SQLCHAR szCreate[] = "CREATE TABLE DL_SAMPL "
                                       "( "
                                       "DL1 DATALINK "
                                          "LINKTYPE URL "
                                          "FILE LINK CONTROL "
                                          "INTEGRITY ALL "
                                          "READ PERMISSION DB "
                                          "WRITE PERMISSION BLOCKED "
                                          "RECOVERY NO "
                                          "ON UNLINK RESTORE "
                                       ")";
    SQLCHAR szInsert[] = "INSERT INTO DL_SAMPL VALUES (?)" ;
    SQLCHAR szFileLink[] =
         "http://fearless.torolab.ibm.com/nfsdlink/rpomeroy/test_1.jpg" ;
    SQLCHAR szComment[] = "My First Datalink" ;
    SQLCHAR szSelect[] = "SELECT * FROM DL_SAMPL" ;
    SQLCHAR szDrop[] = "DROP TABLE DL_SAMPL" ;
    SQLCHAR szDLCol[254] ;
    SQLCHAR szBuffer[254] ;
    SQLSMALLINT cCol ;
    SQLCHAR szColName[33] ;
    SQLSMALLINT fSqlType ;
    SQLUINTEGER cbColDef ;
    SQLSMALLINT ibScale ;
    SQLSMALLINT fNullable ;
    SQLINTEGER  siLength = SQL_NTS ;
/* ... */
    /* Build Datalink */
    rc = SQLBuildDataLink( hstmt,
                           (SQLCHAR *)"URL",
                           strlen("URL"),
                           szFileLink,
                           strlen((char *)szFileLink),
                           szComment,
                           strlen((char *)szComment),
                           szDLCol,
                           sizeof(szDLCol),
                          &siLength
                         );
    CHECK_HANDLE( SQL_HANDLE_STMT, hstmt, rc ) ;
    /*  Set input parameter.  */
    rc = SQLBindParameter(
                           hstmt,
                           1,
                           SQL_PARAM_INPUT,
                           SQL_C_DATALINK,
                           SQL_DATALINK,
                           sizeof(szDLCol),
                           0,
                           (SQLPOINTER)szDLCol,
                           sizeof(szDLCol),
                           NULL
                         ) ;
    CHECK_HANDLE( SQL_HANDLE_STMT, hstmt, rc ) ;
/* ... */
}                                /* end main */

参照


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]