- 締切済み
プロシージャがみつかりません、のエラー
Postgresを使っています。 あるプロシージャのCREATEは成功しているのですが、 (psql -U hoge -f hoge.sql -a -n hoge > hoge.log 2>&1でCREATEが返る) 実際に呼び出すと、 Function 'hoge(int4, int4, int4, int4, unknown, unknown, unknown, int4, unknown, unknown, unknown)' does not exist が返ります。 そこで試行錯誤してパラメータ数を変更してみたところ、 hoge(int2, int2, int4, int2, int2, int4, int2, int2, varchar(40), char(1), varchar(5)) ではNGで hoge(int2, int2, int4, int2, int2, int4, int2, int2, varchar(40), varchar(5)) はOKになります。 hoge(int2) などはもちろんOKになります。 どうしても、char(1)のやつでエラーになるので、 これのタイプをint2やvarchar(1)に変えてみましたが 結果は同じでした。 実はCREATEが成功していないということがあるでしょうか? かれこれ悩んで2日目ですがどこを調べたらよいか見当がつきません。 ありがちなエラーがお分かりになりましたら、どうぞご指摘ください。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- J_ANBI
- ベストアンサー率48% (24/49)
もう少し情報が欲しいと思います。 基本的な情報としては、ご利用のOS名とVersion、 PostgreSQLのVersionがあると解りやすいことが多いです。 さらに、psqlのコマンドラインから、 \d テーブル名 と入力すると、テーブルの構成が表形式で出力されますので、 この結果はどうなっていますか? また、関数hogeでは、実際にどんな処理をしているのでしょう? 差し支えない程度にこれらの情報を出していただければ、 解るかもしれません。 蛇足ですが、SQLは、DBMSによって少なからず文法が異なります。SQL 辞典のような複数のDBMSについて扱った本等を参考にする際には、Postgr esに対応した形式になっているか気を配る必要があると思いますが、その 辺は大丈夫ですか?