人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

postgresqlで同名の関数を定義した場合について質問があります。

posqtgresqlで名前は同じで引数の異なる関数を定義した場合、
その関数を利用する場合の判定は引数によって行われるのでしょうか?
例)
・定義されている関数
(a) func(integer) begin ... end;
(b) func(integer, integer) begin ... end;

・呼び出すSQL
select func(1);
→この場合(a)の関数がコールされる?

select funct(1,2);
→この場合(b)の関数がコールされる?

●質問者: もとやん
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
ベストアンサー

できると思います。
そういうのを「関数のオーバーロード」って言います。
マニュアルに記載があります。
http://www.postgresql.jp/document/9.2/html/xfunc-overload.html
http://www.postgresql.jp/document/9.2/html/sql-createfunction.html#SQL-CREATEFUNCTION-OVERLOADING

マニュアルにも書いてありますけど、関数の実体を C言語で実装するときには、SQL 上ではオーバーロードが効きますけど、C言語ではオーバーロードが効かないので、C言語の関数としては関数名を変えてあげる必要がありそうです。
関数の実体を PL/SQL でやるなら、気にしなくて大丈夫だと思います。


もとやんさんのコメント
ありがとう御座います。 関数のオーバーロードによって定義することが可能なのですね。 マニュアルのリンクもありがとうございました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ