1

任意のタイプの引数を受け入れる関数を作成するにはどうすればよいですか。

次のような関数を作成できます。 CREATE FUNCTION test(anyelement,anyelement) ...

しかし、私がそれを呼ぶとき、私は同じタイプの引数を提示しなければなりません:

SELECT test(1,2); -- ok

だが:

SELECT test('lalala',2); -- error

任意のタイプの引数を受け入れる関数を作成し、それらを文字列にキャストして、この文字列で何かを実行できますか?

では、次のような関数を作成できますか?concat(str "any" [, str "any" [, ...] ])

UPD:更新された2番目の例

4

1 に答える 1

2

簡単な代替手段があります。すべてのタイプをにキャストできますtext。関数を作成するだけです。

CREATE FUNCTION test(text, text [,text [, ...]]) ...

そしてそれを呼んでください:

SELECT test('lalala'::text,2::text);

各引数をテキストに明示的にキャストするだけです。

于 2012-05-28T09:20:54.507 に答える