探しているパラメータはsearch_path
です -クエリが検索するスキーマを一覧表示します。したがって、次のようなことができます。
CREATE TABLE schema1.tt ...
CREATE TABLE schema2.tt ...
CREATE FUNCTION schema1.foo() ...
CREATE FUNCTION schema2.foo() ...
SET search_path = schema1, something_else;
SELECT * FROM tt; -- schema1.tt
SELECT * FROM schema2.tt -- schema2.tt
SELECT foo(); -- calls schema1.foo
SELECT schema2.foo(); -- calls schema2.foo
クエリのプランがfoo()の本体内に保存されると、予期しない結果が生じる可能性があることに注意してください。重複したテーブルを使用している場合は、plpgsql関数で参照されるテーブルのスキーマを常に明示的にリストすることをお勧めします。そうでない場合は、変更されたsearch_pathを使用して動作を確認するためのテストが実施されていることを確認してください。
ああ-関数の本体にもsearch_pathを明示的に設定できます-詳細については、マニュアルのCREATEFUNCTIONリファレンスを参照してください。