[seasar-dotnet:1089] Re: S2Dao.NET、DBFlute - Oracleのパッケージ対応について

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2008年 10月 24日 (金) 00:00:11 JST


小林 (koichik) です.

横から失礼.

Date:    Thu, 23 Oct 2008 22:23:44 +0900
From:    kubo <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [seasar-dotnet:1084] Re: S2Dao.NET、DBFlute - Oracleのパッケージ対応について

> パッケージが別とはいえ同じプロシージャ名は
> 設計的に紛らわしくあまり良いことではないので、

PL/SQL のパッケージは Java のクラスに
相当するものなので,同名のプロシージャや
ファンクションが設計的によくないというのは
おかしいと思います.

PL/SQL は,言語的には Ada の影響を強く
受けているというか,SQL を埋め込み可能な
Ada もどきというか,Pro*Ada と呼んでも
まぁ嘘ではないんじゃないかみたいな言語です.

その Ada のパッケージは Java でいうと
static メンバだけのクラスみたいな感じです.

なので,PL/SQL でも異なるパッケージで同名の
プロシージャやファンクションというのは普通に
使うというか,名前を被らないようにしようという
意識をしません.

Java でクラスが別とはいえ同じメソッド名は
設計的に紛らわしくあまり良いことではない,
なんて考えないのと同じです.

例えば Oracle 標準のライブラリでも,

DBMS_CAPTURE_ADM
DBMS_CUBE
DBMS_LOGMNR_D
DBMS_LOGSTDBY

という 4 つのパッケージに BUILD という
同名のプロシージャが存在するようです.
# パラメータの数などは違う.

DBFlute で対応するしないは別として,
PL/SQL のパッケージはこんな感じと
いうことで.

P.S.
パッケージがメタデータとしてはカタログとして
取れちゃうみたいですが,本来はスキーマより
上位概念のカタログとは全く関係なくて,
スキーマ内のオブジェクトです.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



seasar-dotnet メーリングリストの案内