posqtgresqlで名前は同じで引数の異なる関数を定義した場合、
その関数を利用する場合の判定は引数によって行われるのでしょうか?
例)
・定義されている関数
(a) func(integer) begin ... end;
(b) func(integer, integer) begin ... end;
・呼び出すSQL
select func(1);
→この場合(a)の関数がコールされる?
select funct(1,2);
→この場合(b)の関数がコールされる?
できると思います。
そういうのを「関数のオーバーロード」って言います。
マニュアルに記載があります。
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 でやるなら、気にしなくて大丈夫だと思います。
ありがとう御座います。
2013/04/09 19:43:55関数のオーバーロードによって定義することが可能なのですね。
マニュアルのリンクもありがとうございました。