ORACLE SQL リファレンス(逆引き)

ORACLE SQL リファレンス

Web oracle.se-free.com
ストアドファンクション(FUNCTION)
スポンサード リンク

関数の構文
CREATE OR REPLACE FUNCTION ファンクション名
 [ (パラメータ変数1 [ IN | OUT | INT OUT ] データ型,
   :
  パラメータ変数n [ IN | OUT | INT OUT ] データ型) ] 
 RETURN データ型 { AS | IS }

  /* 宣言セクション */
BEGIN
  /* 実行可能セクション */
EXCEPTION
  /* 例外セクション */
END [ ファンクション名 ];
ストアドプロシージャと似ているが、戻り値が存在することが異なる。

戻り値(RETURN)に指定するデータ型に、長さを指定することはできない。
 例)
   × return char(2)
   ○ return char

ファンクションは、SQL関数としてSQLから呼び出すことが出来ますが、以下の制約があります。
 ・データベース表に変更を加えてないこと。
 ・データベースリンク経由のアクセスやパラレルに実行すり場合、パッケージ変数の値に対して読み書きを実行してないこと。(ストアドパッケージ内部のファンクションの場合)



スポンサード リンク


例1) 引数で指定した「v_dept_id」をキーに、表「dept」のカラム「dept_name」を取得してRETURNで返却する。
create or replace function get_dept(
 v_dept_id in char) 
 return varchar2 as

 v_dept_name varchar2(10);

begin

 select dept_name into v_dept_name from dept 
  where dept_id = v_dept_id;
 return v_dept_name;

end get_dept;


例2) 例1のストアドファンクションをSQL関数として呼び出す。
SQL> select get_dept('D01') from dual;

GET_DEPT('D01')
-----------------------------------------

総務

SQL>


例3) 例1のストアドファンクションを無名ブロックから実行する。
declare

 dept_name varchar2(10);

begin

 dept_name := get_dept(v_dept_id => 'D01');
 dbms_output.put_line(dept_name);

end;

スポンサード リンク


無名ブロック
ストアドプロシージャ(PROCEDURE)
ストアドファンクション(FUNCTION)
ストアドパッケージ(PACKAGE)
トリガー(TRIGGER)
PL/SQLのデータ型
PL/SQLの演算子(計算、代入、結合、連結、指数、比較)
PL/SQLの変数と定数
%TYPE属性と%ROWTYPE属性
PL/SQLの組み込み関数
PL/SQLの実行権限(AUTHID)
PL/SQLを独立したトランザクションで実行する

PL/SQL へ
忘れっぽいエンジニアのオラクルSQLリファレンス TOPへ