Oracle PL/SQLのファンクションのサンプル

OracleのPL/SQLのファンクションのサンプルです。

確認環境
・Oracle Express Edition 11g Release 2
・Windows 10

目次

ファンクション 文字列を出力するファンクション
  select文を実行するファンクション
エラー 作成時にコンパイルエラーが発生したとき
確認 ファンクションの存在確認を行う
削除 ファンクションを削除する

前提

Oracle XE11をインストールし、SQLコマンドラインでPL/SQLを作成します。
OracleXE11のインストールとHRテーブルを確認

文字列を出力するファンクション

文字列を出力するファンクションのサンプルです。
ファンクションは、Returnで値を返します。

CREATE OR REPLACE FUNCTION TEST1
RETURN VARCHAR2
IS
BEGIN
  RETURN('赤です');
END;
/

1行目は、TEST1というファンクションを作成します。
2行目は、戻り値の型を指定します。VARCHAR2型にしました。
5行目は、RETURNで文字列を戻します。

ファンクションを実行する

上記で作成したファンクションを実行するサンプルです。

SQL> select TEST1() from dual;

TEST1()
--------------------------------------------------------------------------------
赤です

select文で実行できます。

select文を実行するファンクション

select文を実行するファンクションのサンプルです。
入力として数値を渡してSQLを実行し、出力として文字列を受け取ります。

CREATE OR REPLACE FUNCTION TEST1(id1 IN NUMBER) RETURN VARCHAR2
IS
  name1 VARCHAR2(20);
BEGIN
  SELECT name INTO name1 FROM SYAIN
  WHERE ID = id1;
  RETURN name1;
END;
/

1行目のid1がNumber型の引数です。Return Varchar2は戻り値の型です。
3行目のname1は、戻り値の名前とデータ型です。
5行目は、selectで取得した値をname1にセットします。
6行目は、id1に引数の値がセットされます。
7行目は、name1の値を戻します。

ファンクションを実行する

上記で作成したファンクションを実行するサンプルです。

SQL> select test1('1') from dual;

TEST1('1')
--------------------------------------------------------------------------------
鈴木

select文で実行できます。

作成時にコンパイルエラーが発生したとき

作成時にコンパイルエラーが発生したときは、show errorと入力するとエラー内容を表示してくれます。

警告: ファンクションが作成されましたが、コンパイル・エラーがあります。

SQL> show error
FUNCTION TEST2のエラーです。

LINE/COL ERROR
-------- -----------------------------------------------------------------
0/0      PL/SQL: Compilation unit analysis terminated
3/8      PLS-00201: 識別子Aを宣言してください。
SQL>

ファンクションの存在確認を行う

ALL_OBJECTSテーブルで確認できます。

SELECT * FROM ALL_OBJECTS 
WHERE OBJECT_TYPE = 'FUNCTION' AND OWNER = 'HR';

上記は、HRスキーマのファンクションを確認しています。

ファンクションを削除する

ファンクションの削除は、以下のように「DROP FUNCTION ファンクション名」と入力します。

DROP FUNCTION test1;
ファンクションが削除されました。

関連の記事

OracleXE11のインストールとHRテーブルを確認
Oracle PL/SQLのプロシージャのサンプル

△上に戻る