0

特定のスキーマでいくつかの関数を作成しましたが、「関数」セクションには何もありません..

次の例のような関数を作成します。

CREATE FUNCTION pymax (a integer, b integer)
  RETURNS integer
AS $$
  if a > b:
  return a
return b
$$ LANGUAGE plpythonu;
4

1 に答える 1

1

名前がスキーマ修飾されていない場合、(他のオブジェクトと同様に) 関数が現在のスキーマに作成されます。現在のスキーマは、 の現在の設定によって定義されますsearch_path

現在の を確認するにはsearch_path:

SHOW search_path;

を設定するには、いくつかの方法がありますsearch_path。詳細については、この関連する回答
を参照してください。

同様の名前の関数がデータベースに存在するかどうかを調べるには、次のようにします。

SELECT n.nspname, p.proname, pg_get_function_arguments(p.oid) As args
FROM   pg_proc p
JOIN   pg_namespace n ON n.oid = p.pronamespace
WHERE  p.proname ILIKE '%pymax%';

何も見つからない場合、関数はこのデータベースに存在しません。間違って別のデータベースに作成したのでしょうか?

于 2013-04-05T18:36:09.590 に答える