TOP > アプリケーションからの使用


アプリケーションからの使用


PL/SQL(Procedural Language extensions to SQL)とは

PL/SQLは、SQL文では不可能な条件分岐処理や繰り返し処理、エラー処理などの処理を可能にする、Oracleの独自の言語である。


PL/SQLの利点

プロシージャ機能 変数、定数、制御構造、カーソルの利用、エラー処理
既存知識の応用 プロシージャ型言語構造の併用、習得したPL/SQL知識を全てのOracleツールで活用可能
パフォーマンスの向上 SQL文を1文ずつ送信するのではなく、ブロック単位で送信するため、パフォーマンスが向上
高い移植性 PL/SQLで書かれたプログラムは、Oracleの稼働環境すべてに移殖可能
Oracleとの統合 SQLデータ型のサポート。また、データベースの列定義をもとにして変数を宣言できるため、プログラムの修正を最小限に押さえられる


ストアド・(サブ)プログラム

CREATEを使用して明示的に作成され、データベース内に格納されたPL/SQLのプログラムのこと。

ストアド・(サブ)プログラムの種類

プロシージャ 特定の処理を実行するサブプログラム

****構文


    CREATE OR REPLACE PROCEDURE procedure_name (parameter, ...)
    IS
    BEGIN
        executable statements
    END;
ファンクション 関数。値を計算するサブプログラム。

****特徴

  • 計算した結果を必ず呼び出し側に戻す
  • 必ず1つはRETURN句が入る
  • 式の一部として呼び出される

****構文


    CREATE OR REPLACE FUNCTION function_name (parameter, ...) RETURN datatype
    IS
    BEGIN
        executable statements
    END;
パッケージ プロシージャやファンクション、変数定義などをカプセル化したスキーマ・オブジェクト

****特徴

  • 仕様部と本体から構成される
  • 仕様部は、アプリケーションへのインターフェース(使用する変数、例外、パラメータ、カーソル、サブプログラム等の宣言)であり、 本体でカーソルとサブプログラムを完全に定義しインプリメントする。

****構文


    <<仕様部>>
    CREATE OR REPLACE PACKAGE package_name
    AS
        function_spec;
        procedure_spec;
    END;

    <<本体>>
    CREATE OR REPLACE PACKAGE BODY package_name
    AS
        function_spec;
        procedure_spec;
    END;
データベーストリガー 表と結び付けられているストアド・サブプログラム。ユーザーからのDML文(INSERT、UPDATE、DELETE)によって、自動的に起動する。


データベース・トリガー

1.BEFORE及びAFTERオプション

CREATE TRIGER文にBEFORE または AFTERオプションを指定して、実行中のトリガー文によってトリガー本体が起動されるタイミングを指定できる。
BEFOREオプション(例1参照)を指定すると、文の前に1回、AFTERオプション(例2参照)を指定すると文の後に1回起動される。


    例1)
CREATE OR REPLACE TRIGGER log_salary_increase BEFORE UPDATE ON Emp_tab

BEGIN INSERT INTO Emp_log 〜; END;


    例2)
CREATE OR REPLACE TRIGGER log_salary_increase AFTER UPDATE ON Emp_tab
BEGIN INSERT INTO Emp_log 〜; END;

2.FOR EACH ROWオプション

FOR EACH ROWオプションによって、トリガーが行トリガーになるか文トリガーになるかが決定される。(例3参照)
FOR EACH ROWオプションを省略した場合、トリガーは文トリガーとなり、個々の文に対して1回のみ起動される。
FOR EACH ROWを指定すると、該当する各行が変更される度に起動される。
例えば、例3のトリガーを定義した後、例4のUPDATE文を実行する。その時、Deptno = 20に該当するレコードが5行あったら、 例3のトリガーが5回起動される。


    例3)
CREATE OR REPLACE TRIGGER log_salary_increase AFTER UPDATE ON Emp_tab FOR EACH ROW WHEN (new.Sal > 1000) DECLARE sal_diff number; BEGIN
INSERT INTO Emp_log (Emp_id, Log_date, New_salary, Action) VALUES (:new.Empno, SYSDATE, :new.SAL, 'NEW_SAL');
END;

    例4)
UPDATE Emp_tab SET Sal = Sal + 1000.0 WHERE Dptno = 20;

Windowsアプリケーションからの利用

・ODBCドライバ

SQLによるRDBMSとの接続には、ODBCドライバを使用する。ODBCドライバは、各RDBMSごとに異なる製品として提供されており、 Oracleと接続するにはOracle ODBCドライバを使用する。
ODBCドライバの設定を行うことで、AccessからOracleのデータが操作可能になる。

・Oracle Objects for OLE

Oracle Objects for OLEは、アプリケーション・プログラムに対して、データベースへのアクセス機能を提供する製品。
MicroSoft ExcelやMicrosoft Visual BasicなどのOLEクライアントから呼び出し、データベースへのアクセスが可能となる。


TOP > アプリケーションからの使用

2001/03/14 担当:A.M