シングル・スキーマ・システムでのクロスデータベースの使用例

以下の例では、システムにはPRODとDEVの2つのデータベースがあり、それぞれのデータベースにはEMPという名前のテーブルがあります。 DEV データベースへの接続時には、以下のコマンドを使用して表 EMP のすべての行をリトリーブできます。

DEV.DBUSER(DBUSER)=> SELECT * FROM emp;
注:各データベースには、データベースを作成したユーザー(この例ではユーザーDBUSER)の名前が付いたデフォルト・スキーマがあります。 以下の例では、DBUSER が DEV と PROD の両方のデータベースを作成したことが示されています。

DEV への接続中、PROD の EMP 表の行を選択するには、表の識別に database.schema.object name 形式を使用できます。例:

DEV.DBUSER(DBUSER)=>SELECT * FROM prod.dbuser.emp;
注意:ベスト・プラクティスとして、オブジェクトを参照するには、PROD.DBUSER.EMPのような完全修飾オブジェクト名を使用してください。 単一スキーマ環境では、PROD..EMPのように「ドット・ドット」表記を使うこともでき、データベースはそのデータベースのデフォルトで唯一のスキーマを使用する。 ただし、「ドット・ドット」表記をベスト・プラクティスとしては使用しないでください。 単一スキーマ環境では、スキーマに指定した値は無視される。 無効なスキーマを指定した場合、システムはデフォルト・スキーマを使用し、エラーは表示されません。

クロスデータベースの INSERT、UPDATE、DELETE 文を使用して、別のリモート・データベースの表を変更できます。 例:

DEV.DBUSER(DBUSER)=>INSERT INTO prod..emp SELECT * FROM newusers;