仕様: | 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);
関数引き数
データ・タイプ | 引き数 | 使用法 | 説明 |
---|---|---|---|
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 つ (LinkTypeLength、DataLocationLength、または 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 */
参照