スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド

[目次][索引][前へ][次へ]

16.11.6 繰返し列の実行

表exの1列目に「123」,及び「456」を挿入する例を次に示します。

プログラム例はVisual C# .NETで記述していますが,Visual Basic.NETでもほぼ同じ内容です。必要に応じて,読み替えてください。

 
    // 接続オブジェクトなどを作成する
    HiRDBConnection    pConn = new HiRDBConnection("接続文字列");
    HiRDBCommand    pCom = pConn.CreateCommand();
 
    // DBに接続する
    pConn.Open();
 
    // 表を作成する
    pCom.Connection = pConn;
    pCom.CommandText = "create table ex(a int array[3])";
    pCom.ExecuteNonQuery();
    // パラメタオブジェクトを作成する
    HiRDBParameter    pPar = pCom.CreateParameter();
 
    // パラメタの設定をする
    pPar.Direction = ParameterDirection.Input;
    pPar.HiRDBType = HiRDBType.Integer;
    object [] aValue = new object[2];
    aValue[0] = 123;
    aValue[1] = 456;
    pPar.Value = aValue;
    // 表exの列aの最大要素数を設定する
    pPar.Repetition =3;
    pCom.Parameters.Add(pPar);  ........................................1
    // パラメタを使用してSQL文を実行する
    pCom.CommandText = "insert into ex values(?)";
    pCom.ExecuteNonQuery();
 
    // select文を実行する
    pCom.CommandText = "select * from ex";
    HiRDBDataReader pReader = pCom.ExecuteReader();
    // データがなくなるまでフェッチする
    while ( pReader.Read())
    {
        for ( int i = 0; i < pReader.FieldCount; ++ i)
            for ( int j = 0; j < pReader.GetFieldArrayCount(i); ++ j)
                Console.WriteLine(pReader.GetValue(i, j));
    }  .................................................................2
 
    // DBから切断する
    pConn.Close();
 

[説明]
  1. valueにobject配列を設定するのは,配列を使用したINSERT文と同じです。繰返し列の場合,更に拡張プロパティRepetitionを設定します。これには繰返し列の数を指定します。そのため,SQL実行時の引数は必要ありません。
  2. FETCHの場合,DataReaderにも繰返し列のための拡張メソッドが用意されています。まず,FETCHしたデータの繰返し列の個数をGetFieldArrayCountで取得します。さらに,FETCHしたデータの値をGetValueの:overloadで取得します。第2引数には繰返し列の列番号を指定します。また,このメソッドと等価なインデクサ[int,int]も用意しています。

繰返し列の使用方法は,配列を使用したINSERT機能に似ています。異なるのは,パラメタに繰り返し回数を指定する部分と,SQL文を実行する部分です。