イメージ、オーディオ、およびビデオ・エクステンダー 管理およびプログラミングの手引き

表を使用可能にする

DBxEnableTable API (ここで、x は音声の場合は a、画像の場合は i、ビデオの場合は v) または、ENABLE TABLE コマンドで DB2 エクステンダー用の表を使用可能にします。

ユーザー表を使用可能にする場合、ともに使用する管理サポート表 (およびその索引) を保持するための表スペースも指定しなければなりません。 指定した表スペースの 1 つまたはそれ以上がヌル値であることがありますが、その場合には省略時表スペースが使用されます。

EEE のみ: 区画環境でエクステンダー用に表を使用可能にする場合、指定する表スペースを、区分データベース・システム内のすべてのノードを含むノード・グループ内に定義しなければなりません。 さらに、指定した表スペースは、ユーザー表と同じノード・グループ内に配置しなければなりません。

EEE のみ: DB2 エクステンダー列を、区分データベース環境の区分化キーとして使用することはできません。

ユーザー表に対する Control か Alter 権限が必要です。 表を使用可能にするには、その表が含まれているデータベースが使用可能になっていなければなりません。

次の例では、表が使用可能にされ、省略時の表スペースに画像データが入れられます。 このデータベースはすでに使用可能になっています。

API の使用: 次の例で、表が使用可能にされる前に、コードで表が作成され、変更がコミットされます。 この例には、エラー検査コードが組み込まれています。 このサンプル・プログラム全体は、SAMPLES サブディレクトリーの ENABLE.C ファイルにあります。

図 11. 表を使用可能にするサンプル・コード

        SQLCHAR szCreate_DB2UDB[]="CREATE TABLE %s(%s mmdbsys.DB2Image,
        %s mmdbsys.DB2Video, %s mmdbsys.DB2Audio, artist varchar(25), title varchar(25)
        stock_no char(11), tw char(10), price char(10))";
 
        SQLRETURN rc = SQL_SUCCESS;
        SQLINTEGER sqlcode = 0;
        char errorMsgText[MMDB_ERROR_MSG_TEXT_LEN+1];
        char tableName[8+18+1] = "sobay_catalog";
        char audioColumn[18+1] = "music";
        char imageColumn[18+1] = "covers";
        char videoColumn[18+1] = "video";
        char *program = "enable";
        char *step;
       
/*-----create table --------------------------------------------------*/
       printf("%s: Creating table ......\n", program);
       if (!SERVER_IS_DB2390)
         sprintf((char*) buffer, (char*) szCreate_DB2UDB,
                   tableName, imageColumn, videoColumn, audioColumn):
       
       rc = SQLAllocStmt(hdbc, &hstmt);
       cliCheckError(SQL_NULL_HENV, hdbc, SQL_NULL_HSTMT, rc);
       rc = SQLExecDirect(hstmt, buffer, SQL_NTS);
       cliCheckError(SQL_NULL_HENV, SQL_NULL_HDBC, hstmt, rc);
 
/*---- enable table for image extender ---------------------------------*/
     printf("%s: Enabling table......\n", program);
     step="DBiEnableTable";
     if (!SERVER_IS_DB2390)
         rc = DBiEnableTable(NULL,tableName);
           }
         if (rc < 0) {
                printf("%s: %s failed!\n", program, step);
                printMsg(rc);
                DBiGetError(&sqlcode, errorMsgText);
                if (sqlcode)
                  printf("sqlcode=%i, "sqlcode");
                printf("errorMsgText=%s\n", errorMsgText);
         } else if (rc > 0) {
                printf("%s: %s, warning detected.\n", program, step);
                printMsg(rc);
                DBiGetError(&sqlcode, errorMsgText);
                printf("warningMsgText=%s\n", errorMsgText);
         } else
                printf("%s: %s OK\n", program, step)
/*---- end of enable table --------------------------------------------*/
 
 

db2ext コマンド行の使用: この例では、表がすでに存在しており、データベースが使用可能になっています。

enable table employee for db2image


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