私はPostgreSQL 8.2.15(Greenplumデータベース4.2.0ビルド1)(HAWQ 1.2.1.0ビルド10335)に取り組んでいます。
私は次のような関数を書きました
create or replace function my_function (
...
select exists(select 1 from my_table1 where condition) into result;
私はそれを次のようにテストしました
select my_function(params);
それは完全に機能します!
ここに問題があります。関数を次のように呼び出すと
select my_function(params) from my_table2;
Postgresはあなたが間違っていると言った!
エラー: リレーション "my_table1" が存在しません (segXX sliceX xx.xx.xx:40003 pid=570406)
- これらのテーブルと関数は同じスキーマにあります。
- 私はそれらにアクセスできます。
- どちらの名前も小文字です。
だから、私を助けてください。
私が試したこと
- これらのテーブルを my_schema から public に移動します
- 関数をパブリックに移動
- my_schema.my_table1 のようなスキーマ プレフィックスを追加します。
2015/04/19 編集
Postgre -> Postgre
そして、私はそれを次のように試しました
select my_function(params) from pg_stat_activity;
大丈夫です。
その関数を次のように編集する場合
create or replace function my_function (
...
select true into result;
どんな場合でも機能します。