BEAGLE-HC 医薬品、医療機器の研究・開発 ポータルサイト
 現在位置 : HOME > ITの活用 プログラミング > SQL > PL/SQL コードライブラリアン(SP)
くすりのこと
 治療薬の最前線
データブック
 ヘルスケア市場
 データブック
 (売上ランキング)
ニュース
 企業ニュース
 (パイプラインニュース)
 (財務・決算ニュース)
 (M&Aニュース)
 メディアニュース
ITの活用
 バリデーション
 セキュリティ
 WORD文書の作成
 プログラミング
 (Word/VBA)
 (Excel/VBA)
 (Access/VBA)
 (SAS)
 (SQL)
イベント
 イベントカレンダ
製薬会社研究
 製薬会社
 製薬会社研究
 決算短信一覧
 
 
Word/VBA プログラミング Excel/VBA プログラミング Access/VBA プログラミング
SAS プログラミング SQL LiveCycle Designer
 
記述の規則 プログラム制御 関数 SQL文
ストアドプロセジャー ファイル操作 例外処理  
 
サブプログラム
ストアド・サブプログラムは、Oracle データベースに格納されたプロシージャやファンクションで、以下の3つに分類されます。
  ・PL/SQL プロシージャ/(ストアド・プロシージャ)
  ・PL/SQL ファンクション/ストアド・ファンクション)
  ・PL/SQL パッケージ/(ストアド・パッケージ)
    ストアドプロシージャとストアドファンクションのライブラリ集

トリガーは表、ビューのイベントに関連付けされているストアド・サブプログラムを言います。
 
ストアド・プロシージャ
CREATE OR REPLACE PROCEDURE プロシージャ名
 [ (パラメータ変数1 [ IN | OUT | INT OUT ] データ型,
   :
  パラメータ変数n [ IN | OUT | INT OUT ] データ型) ] { AS | IS }
-- local declarations
Begin

Exception

End [ プロシージャ名 ];

引数で指定した v_dept_id をキーに、表 departments の department_name を取得し、v_dept_nameを返却します

IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id('get_dept') and sysstat & 0xf = 4)
     DROP PROCEDURE get_dept
GO

CREATE PROCEDURE get_dept
  (
   v_dept_id IN NUMBER,
   v_dept_name OUT VARCHAR2
  )
AS

Begin
 SELECT department_name INTO v_dept_name FROM departments
    WHERE department_id = v_dept_id;
End get_dept;

ブロックからの実行
Declare
 disp_dept_name VARCHAR2(30);
Begin
 get_dept(1000 , v_dept_name => disp_dept_name);
 DBMS_OUTPUT.PUT_LINE(disp_dept_name);
End;


SQL*PLUSからの実行
 SQL>EXECUTE get_dept('ID01','なまえ');  -- EXECUTEに替わりCALLも可
 
ストアド・ファンクション
CREATE OR REPLACE FUNCTION ファンクション名
 [ (パラメータ変数1 [ IN | OUT | INT OUT ] データ型,
   :
  パラメータ変数n [ IN | OUT | INT OUT ] データ型) ] 
 RETURN データ型 { AS | IS }

  /* 宣言セクション */
Begin
  /* 実行可能セクション */
Exception
  /* 例外セクション */
End [ ファンクション名 ];

引数で指定した v_dept_id をキーに、表 departments の department_name を取得してRETURNで返却します

IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id('get_dept') and sysstat & 0xf = 4)
     DROP PROCEDURE get_dept
GO

CREATE FUNCTION get_dept
  (
   v_dept_id IN NUMBER
  )
RETURN VARCHAR2
AS
 v_dept_name VARCHAR2(10);

Begin
 SELECT department_name INTO v_dept_name FROM departments
    WHERE department_id = v_dept_id;
  RETURN v_dept_name;
End get_dept;

ブロックからの実行
Declare
 dept_name VARCHAR2(30);
Begin
 department_name := get_dept(1000);
 DBMS_OUTPUT.PUT_LINE(department_name);
End;
 
ストアド・パッケージ
パッケージは、ストアドファンクション、ストアドプロシジャを共有宣言も含めひとつにまとめたものです。ストアドパッケージは、パッケージ仕様部とパッケージ本体の2つから構成されます。
パッケージ仕様部
パッケージ外部またはパッケージ全体からアクセス可能な、プロシージャ、ファンクション、変数、例外、データ型、カーソルを定義します。プロシージャやファンクションはインターフェースの定義のみ記述し、内部のプログラムは、パッケージ本体に記述します。

  CREATE OR REPLACE PACKAGE パッケージ名 { AS | IS }
   プロシージャ定義;
   ファンクション定義;
   変数定義;
   データ型定義;
   例外定義;
   カーソル定義;
  END [ パッケージ名 ];

パッケージ本体
パッケージ仕様部で定義した、プロシージャやファンクションに対応するプログラムを記述します。また、パッケージ本体内部からのみアクセス可能な、プロシージャやファンクションも記述します。

  CREATE OR REPLACE PACKAGE BODY パッケージ名 { AS | IS }
   パッケージ仕様部のプロシージャ定義に対応したプログラム;
   パッケージ仕様部のファンクション定義に対応したプログラム;
   パッケージ本体内部から呼ばれるプロシージャプログラム;
   パッケージ本体内部から呼ばれるファンクションプログラム;
  END [パッケージ名];
 

↑ このページの最初へ

   ご意見・ご感想をお寄せください。 ‖ お問い合わせはこちらから ‖ このサイトについて           サイトマップ  ‖
  Copyright 2006 - 2013 uTRAM Corp. All Rights Reserved
 
PHARCIS(ヘルスケア最新情報提供)
Facebook for PHARCIS
ClinMark8
アクセスランキング
(2013年5月)

1位 企業ニュース
2位 売上ランキング
3位 メディアニュース
4位 製薬会社
5位 治療薬の最前線
6位 決算短信一覧
7位 データブック
8位 製薬会社研究
9位 イベントカレンダ
10位 パイプラインニュース