読者です 読者をやめる 読者になる 読者になる

「Oracle」ストアドファンクションを作成してみる

以下のエントリーで Oracle Database のストアドプロシージャをごにょごにょしてみたわけですが、せっかくなのでストアドファンクションも触ってみました。

・「Oracle」ストアドプロシージャを作成してみる - プログラム日記
http://a4dosanddos.hatenablog.com/entry/2015/05/08/010524
・「Oracle」ストアドプロシージャのカーソルを使ってみる - プログラム日記
http://a4dosanddos.hatenablog.com/entry/2015/05/08/012356

例によって、簡単な内容になります。

パッケージ仕様部

create or replace package ccc as
  function hello (name in varchar) return varchar;
  function addition (x in number, y in number) return number;
  function count_t1 return number;
end ccc;
/

本体

create or replace package body ccc as
  function hello (name in varchar) return varchar is
  r varchar(50);
  begin
    r := 'hello ' || name;
    return r;
  end;
  
  function addition (x in number, y in number) return number is
  r number;
  begin
    r := x + y;
    return r;
  end;
  
  function count_t1 return number is
  r number;
  begin
    select count(*) into r from t1;
    return r;
  end;
end ccc;
/


ストアドファンクションは SQL から実行できます。以下の感じで。

select ccc.hello('hoge') as hello from dual;
select ccc.addition(1, 2) as addition from dual;
select ccc.count_t1 as count_t1 from dual;


以上です。

・CREATE FUNCTION文
https://docs.oracle.com/cd/E15817_01/appdev.111/e05670/create_function.htm

[ 環境情報 ]
CentOS 5.5
Oracle Database 11g Release 2 ( 11.2.0.1.0 )