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

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

12.2.2 既定SQLコネクションを使用する

ここでは,現行SQLコネクションとして既定SQLコネクションを使用して,リモートデータベースアクセスをする方法を説明します。

現行SQLコネクションとして既定SQLコネクションを使用する場合は,既定RDノードと接続できるすべての分散RDノードにあるデータベースにアクセスできます。これを実行するには,アクセスする表や手続きがどの分散RDノードにあるのかを次に示す方法で既定RDノードのHiRDBに知らせる必要があります。

  1. 表の名称をRDノード名称で修飾する。
  2. 表別名を使用する。
  3. 手続きの名称をRDノード名称で修飾する。

1及び3の方法は既定RDノードにある表,又は手続きにアクセスする場合にも使えます。その場合は,既定RDノードのRDノード名称で修飾します。ただし,名称がRDノード名称で修飾されていない表,又は手続きは現行RDノードにあるものとして処理します。

既定SQLコネクションを使うと分散RDノードのデータベースにもアクセスできますが,次の制限があります。

<この項の構成>
(1) 表の名称をRDノード名称で修飾する
(2) 表別名を使用する
(3) 手続きの名称をRDノード名称で修飾する
(4) 既定SQLコネクションと異なる認可識別子を使ってアクセスする

(1) 表の名称をRDノード名称で修飾する

表の名称をRDノード名称で修飾する場合の形式を次に示します。

  
  RDノード名称.認可識別子.表識別子
  

RDノード名称:
表のあるRDノードのRDノード名称を指定します。

認可識別子.表識別子:
表のあるRDノードに定義されている認可識別子と表識別子を指定します。

<指定例>
  • RDノード名称がRDNODE10のRDノードにある表MANAGER.JUTYUを検索する場合
  
  SELECT * FROM RDNODE10.MANAGER.JUTYU
  

(2) 表別名を使用する

分散RDノードにある表を表別名で指定するときの形式を次に示します。なお,分散サーバ,又は分散クライアントのどちらかがSolarisの場合,表別名は使用できません。

  
  〔認可識別子.〕表別名
  

〔認可識別子.〕表別名:
CREATE ALIASで定義した名称を指定します。なお,ここで指定する名称は,表のあるRDノードに定義されている認可識別子,及び表識別子とは一致しない場合があるので注意してください。

<指定例>
  • RDノード名称がRDNODE10の分散RDノードにある表MANAGER.JUTYUに,表のあるRDノードに定義されている名称と同じ別名MANAGER.JUTYUを付け,その定義した別名を用いて検索する場合
1. CREATE ALIASで別名を定義
  
CREATE ALIAS MANAGER.JUTYU FOR RDNADE10.MANAGER.JUTYU
  
2. 1.で定義した別名を用いた検索
  
SELECT * FROM MANAGER.JUTYU
  

(3) 手続きの名称をRDノード名称で修飾する

手続きの名称をRDノード名称で修飾するときの形式を次に示します。

  
  RDノード名称.認可識別子.ルーチン識別子
  

RDノード名称:
手続きのあるRDノードのRDノード名称を指定します。

認可識別子.ルーチン識別子:
手続きのあるRDノードに定義されている認可識別子とルーチン識別子を指定します。

<指定例>
  • RDノード名称がRDNODE10のRDノードにある手続きMANAGER.PROC10を呼び出す場合
  
  CALL RDNODE10.MANABER.PROC10(引数指定)
  

(4) 既定SQLコネクションと異なる認可識別子を使ってアクセスする

既定SQLコネクションを使用する場合も,リモートデータベースアクセスをするためには分散RDノードへのSQLコネクションが必要です。SQLコネクションを作成しないで,UAPがリモートデータベースアクセスをするSQLを発行すると,既定RDノードのHiRDBが分散RDノードへのSQLコネクションを自動的に作成します。

しかし,HiRDBが自動的に作成するSQLコネクションは既定SQLコネクションと同じ認可識別子を含むものになるため,分散RDノードでその認可識別子に権限が与えられていないとリモートデータベースアクセスができません。このような場合は,分散RDノードで権限が与えられている認可識別子を含むSQLコネクションをあらかじめ作成しておいて,それを利用できます。

<使用例>
次の例ではRDノード指定CONNECT文で,分散RDノードで権限が与えられている認可識別子を含むSQLコネクションを作成します。RDノード指定CONNECT文を実行すると分散RDノードへのSQLコネクションが現行SQLコネクションになるので,SET CONNECTION文で現行SQLコネクションを既定SQLコネクションに戻してから,リモートデータベースアクセスをするSQLを発行します。
  
  CONNECT  TO  RDNODE10  USER :USER2  USING :PSWD2
  SET  CONNECTION  DEFAULT
  SELECT  ZSURYO  INTO :suryou  FROM
    RDNODE10.MANAGER.ZAIKO  WHERE  SCODE='302S'