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文で使用できます。次の例では、列col1はROWIDデータ型で定義されています。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データ間の比較処理でサポートされています。
CHAR、VARCHAR2およびROWIDのオペランドがCOALESCE、DECODE、NVLまたはCASE式(「CASE式」を参照)で組み合せて使用されている場合、結果のデータ型はROWIDになります。CHAR値およびVARCHAR2値を使用した式は、ROWID値に変換されて式が評価されます。
CONCATなどの文字列関数でROWID値を使用するには、アプリケーションでSQL TO_CHAR関数を使用してROWID値を明示的にCHAR値に変換する必要があります。