ROWIDデータ型

ROWIDデータ型は、TimesTen Scaleoutではサポートされていません。表またはマテリアライズド・ビューの行のアドレスは、行ID (ROWID)と呼ばれます。行IDのデータ型はROWIDです。ROWIDは、ROWID擬似列を問い合せることで確認できます。ROWID疑似列の詳細は、「ROWID疑似列」を参照してください。

SQL文では、リテラルのROWID値は、次のように一重引用符で囲んだ定数として指定してください。

Command> SELECT ROWID, last_name FROM employees 
         WHERE department_id = 20;

< BMUFVUAAACOAAAALhM, Hartstein >
< BMUFVUAAACOAAAAMhM, Fay >
2 rows found.

Command> SELECT ROWID, last_name FROM employees
         WHERE ROWID='BMUFVUAAACOAAAALhM';
< BMUFVUAAACOAAAALhM, Hartstein >
1 row found.

ROWIDデータ型を次のように使用します。

  • 表の列またはマテリアライズド・ビューの列のデータ型として使用できます。

  • 次のタイプの式で使用できます。

  • ORDER BY句およびGROUP BY句で使用できます。

  • INSERT...SELECT文で使用できます。次の例では、列col1ROWIDデータ型で定義されています。

    Command> DESCRIBE master;
     
    Table MYUSER.MASTER:
      Columns:
       *ID                              ROWID NOT NULL
        NAME                            CHAR (30)
     
    1 table found.
    (primary key columns are indicated with *)
    
    Command> INSERT INTO master(id, name) SELECT ROWID, last_name 
             FROM employees;
    107 rows inserted.
    Command> SELECT * FROM master;
    < BMUFVUAAACOAAAAGhG, King                           >
    < BMUFVUAAACOAAAAHhG, Kochhar                        >
    < BMUFVUAAACOAAAAIhG, De Haan                        >
    ...
    107 rows found.
    

    次に示すように、TO_CHAR関数をROWID擬似列で使用できます。

    Command> INSERT INTO master(id, name) 
             SELECT TO_CHAR(ROWID), last_name
             FROM employees;
    107 rows inserted.
    Command> SELECT * FROM master;
    < BMUFVUAAACOAAAAGhG, King                           >
    < BMUFVUAAACOAAAAHhG, Kochhar                        >
    ...
    107 rows found.
    

    次に示すように、CAST関数をROWID擬似列で使用できます。

    Command> CREATE TABLE master (id CHAR(20) NOT NULL PRIMARY KEY, 
                                  name CHAR(30));
    Command> INSERT INTO master(id, name) 
             SELECT CAST(ROWID AS CHAR(20)), last_name 
             FROM employees;
    107 rows inserted.
    

暗黙的な型変換は、値の割当てと、ROWIDデータとCHARデータ間またはROWIDデータとVARCHAR2データ間の比較処理でサポートされています。

CHARVARCHAR2およびROWIDのオペランドがCOALESCEDECODENVLまたはCASE式(「CASE式」を参照)で組み合せて使用されている場合、結果のデータ型はROWIDになります。CHAR値およびVARCHAR2値を使用した式は、ROWID値に変換されて式が評価されます。

CONCATなどの文字列関数でROWID値を使用するには、アプリケーションでSQL TO_CHAR関数を使用してROWID値を明示的にCHAR値に変換する必要があります。