3 ケース・スタディ
Sybase用の次のケース・スタディは、Oracle Databaseゲートウェイの機能の一部を示しています。 ゲートウェイが配布メディアに含まれているデモンストレーション・ファイルを使用して正しくインストールされ、正しく動作していることを確認できます。
デモンストレーション・ファイルは、ゲートウェイのインストール時に自動的にディスクにコピーされます。
トピック:
ケースの内容
ケースの内容は次のとおりです。
-
単純な問合せ(ケース1)
-
より複雑な問合せ(ケース2)
-
Sybase表の結合(ケース3)
-
書込み機能(ケース4)
-
データ・ディクショナリの問合せ(ケース5)
-
パススルー機能(ケース6)
-
ストアド・プロシージャの実行(ケース7)
配布メディアの内容
配布メディアには次のものが含まれています:
-
デモンストレーション・ファイル
-
デモ表とストアド・プロシージャをSybaseデータベースに作成する1つのSQLスクリプト・ファイル
-
Sybaseデータベースからデモ表とストアド・プロシージャを削除する1つのSQLスクリプト・ファイル
デモ・ファイルへのアクセス
ゲートウェイが正常にインストールされたら、$ORACLE_HOME/dg4sybs/demo,
ディレクトリに格納されているデモンストレーション・ファイルを使用します。$ORACLE_HOME
は、ゲートウェイがインストールされているディレクトリです。 このディレクトリには、次のデモンストレーション・ファイルが含まれています:
デモンストレーションの要件
ケース・スタディでは、次の要件が満たされていることを前提にしています。
-
ゲートウェイ・デモンストレーション表とストアド・プロシージャは、Sybaseデータベースにインストールされています
-
Oracleデータベースには、
TIGER
というパスワードを持つSCOTT
という名前のアカウントがあります -
Oracleデータベースには、
GTWLINK
という名前のデータベース・リンクがあり(SCOTT
にpublicまたはprivateとして設定されています)、SCOTT
とパスワードTIGER2
としてゲートウェイをSybaseデータベースに接続します。たとえば、次のようなデータベース・リンクを作成できます。
SQL> CREATE DATABASE LINK GTWLINK CONNECT TO SCOTT 2 IDENTIFIED BY TIGER2 USING 'GTWSID';
-
Oracle Net Servicesが正常に構成され、稼働していること
-
Sybase環境変数
SYBASE
が正しく設定されている
デモンストレーション表の作成
ケース・スタディは、GTW_EMP
、GTW_DEPT
、およびGTW_SALGRADE
表とストアド・プロシージャInsertDept
およびGetDept
に基づいています。 デモ表とストアド・プロシージャがSybaseデータベースに作成されていない場合は、 bldsybs.sql
スクリプトを使用して作成します。 次のように入力します。
$ isql -USCOTT -PTIGER2 -ibldsybs.sql
スクリプトは、デモ表とストアド・プロシージャをSybaseデータベースに適切に作成します:
CREATE TABLE GTW_EMP ( EMPNO SMALLINT NOT NULL ENAME VARCHAR(10), JOB VARCHAR(9), MGR SMALLINT, HIREDATE DATETIME, SAL NUMERIC(7,2), COMM NUMERIC(7,2), DEPTNO SMALLINT) go CREATE TABLE GTW_DEPT ( DEPTNO SMALLINT NOT NULL, DNAME VARCHAR(14), LOC VARCHAR(13)) go CREATE TABLE GTW_SALGRADE ( GRADE MONEY, LOSAL NUMERIC(9,4), HISAL NUMERIC(9,4)) go SET CHAINED ON go DROP PROCEDURE InsertDept go CREATE PROCEDURE InsertDept (@dno INTEGER, @dname VARCHAR(14), @loc VARCHAR(13)) AS INSERT INTO GTW_DEPT VALUES (@dno, @dname, @loc) go DROP PROCEDURE GetDept go CREATE PROCEDURE GetDept (@dno INTEGER, @dname VARCHAR(14) OUTPUT) AS SELECT @dname=DNAME FROM GTW_DEPT WHERE DEPTNO=@dno go
デモンストレーション表の定義
表の定義は、SQL*PLUSのDESCRIBE
コマンドで取得した情報を使用して、次の表にリストされています:
GTW_EMP
Name Null? Type ------------------------------- -------- ---- EMPNO NOT NULL NUMBER(5) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(5) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(5)
GTW_DEPT
Name Null? Type ------------------------------- -------- ---- DEPTNO NOT NULL NUMBER(5) DNAME VARCHAR2(14) LOC VARCHAR2(13)
GTW_SALGRADE
Name Null? Type ------------------------------- -------- ---- GRADE NUMBER(19,4) LOSAL NUMBER(9,4) HISAL NUMBER(9,4)
デモンストレーション表の内容
Sybase表の内容は次のとおりです:
GTW_EMP
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ----- ----- --- --- -------- --- ---- ------ 7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7566 JONES MANAGER 7839 02-APR-81 2975 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7698 BLAKE MANAGER 7839 01-MAY-81 2850 30 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7788 SCOTT ANALYST 7566 09-DEC-82 3000 20 7839 KING PRESIDENT 17-NOV-81 5000 10 7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30 7876 ADAMS CLERK 7788 12-JAN-83 1100 20 7900 JAMES CLERK 7698 03-DEC-81 950 30 7902 FORD ANALYST 7566 03-DEC-81 3000 20 7934 MILLER CLERK 7782 23-JAN-82 1300 10
GTW_DEPT
DEPTNO DNAME LOC ----- -------------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON
GTW_SALGRADE
GRADE LOSAL HISAL ------ ------ ----- 1 700 1200 2 1201 1400 3 1401 2000 4 2001 3000 5 3001 9999
ケース1: 単純な問合せ
ケース1では、次の内容について説明します。
-
単純な問合せ
-
日付情報をすべて取り出す単純な問合せ
最初の問合せはGTW_DEPT
からすべてのデータを取得し、ゲートウェイが正常に動作していることを確認します。 2番目の問合せは、ALTER SESSION
コマンドによってセッションのデフォルトの日付形式がDD-MON-YY HH24:MM:SS
に設定されていたため、雇用日の時間部分を含むGTW_EMP
からすべてのデータを取得します。
ケース3: Sybase表の結合
ケース3では、次の内容について説明します。
-
Sybase表間のジョイン
-
サブセレクト
この問合せでは、3つのSybase表から情報を取得し、従業員を部門名と給与グレードに関連付けますが、平均給与を超える従業員にのみ関連します。
ケース6: パススルー機能
ケース6は、アプリケーションがSybaseにコマンドまたは文を送信するためのゲートウェイ・パススルー機能を示しています。
このケースでは次の内容について説明します。
-
バインド変数を使用するパススルー
UPDATE
文 -
パススルー
SELECT
文