• 締切済み

pl/pgsqlでの、エラーコードとファイル操作の方法

pl/pgsqlのFunctionで、ファイル操作はできますか? また、FunctionでException発生時にエラーコードやエラーメッセージは取得できますか? Windows,PostgreSQL8.2.3です。

  • TUNEZ
  • お礼率66% (2/3)

みんなの回答

回答No.1

エラーの捕捉は可能です。 http://www.postgresql.jp/document/pg823doc/html/plpgsql-control-structures.html#PLPGSQL-ERROR-TRAPPING PL/pgSQLでは、ファイル操作する機能はないようです。PostgreSQLでは、C言語でユーザ定義関数を作成できるので、C言語等で実装する必要があると思います。 http://www.postgresql.jp/document/pg823doc/html/spi-examples.html

関連するQ&A

  • PL/pgSQL 引数の数

    PL/pgSQL を使用し更新処理を行いたいのですが、 パラメータの数が多すぎるのか 以下のエラーでデータベースにファンクションを定義出来ません。 ERROR: functions cannot have more than 100 arguments SQLステート:54023 可変長引数で作成すると、データベースに定義は出来るのですが ファンクション実行時に同様のエラーが発生し更新処理が行えません。 PL/pgSQL の引数を100以上使用出来る様にする設定等、存在するのであれば 教えて頂きたいです。 環境は以下の内容です。 CentOS-6.2-x86_64 Apache/2.2.15 PostgreSQL 9.1.3 PHP Version 5.3.3 (PDOを使用しています)

  • PL/pgSQLの直接実行

    PL/pgSQLのことで教えてください。 これまで SQL Server を使っていましたが、PostgreSQL に移行しています。 Npgsql で、VB.Net から接続しようと思っています。 PL/pgSQLで、ストアドファンクションなどを定義するのではなく、PL/pgSQLスクリプトを 直接実行することはできないのでしょうか? SQL Server では、T-SQLのスクリプトを直接実行できました。 例えば ManagementStudioのクエリ実行画面にスクリプトを入力して実行したり、 VBからだと、SqlCommand の CommandText に T-SQLを書いて実行したり、という ことです。 pgAdminIIIのSQLエディタや、NpgsqlのNpgsqlCommandで同様のことをやろうとすると エラーになります。 何か良い方法があるのでしょうか?

  • PL/pgSQLについて

    お世話になっております。 PL/pgSQLでPostgreSQLのあるテーブルにinsertがかかったら、別のテーブルをtriggerを使ってupdateする構文を書いていますが、上手くいきません。 insertを実行すると、変数が割り当てられていない旨が表示されます。 サンプルは以下の通り DROP FUNCTION k_trig(); CREATE FUNCTION k_trig() RETURNS OPAQUE AS' DECLARE ov1 RECORD; ov2 RECORD; BEGIN SELECT * FROM 個別集計 INTO ov1 WHERE id = new.id; UPDATE 個別集計 SET a1 = ov1.a1 + new.a1, a2 = ov1.a2 + new.a2, a3 = ov1.c + new.a3 WHERE id = new.id; *****以下省略 insert実行 ↓ 「record ov1 is unassigned yet」と表示されます。 declareで宣言しているのですが・・・ 何が原因か教えてください

  • 手続き言語のPl/pgSQLをcreate languageで登録しようとすると。。

    Vine Linux をベースにPostgresSQL-8.0.1で手続き言語のPl/pgSQLをcreate languageで登録しようとすると、function plpgsql () dose not existとなります。 下記のサイトを見てもいまいちわかりません。 http://shigehiro.hp.infoseek.co.jp/pgsql702-user/sql-createlanguage.htm それで、 create function plpgsql () returns plpgsql as 'usr/local/pgsql/lib/plpgsql.so' language 'c'; と打ち込むと Notice: type "plpgsql" is not yet defined Detail: creating a shell type definition. Error: could not access file "usr/local/pgsql/lib/plpgsql.so": そのようなファイルやディレクトリはありません とでます。linux のコマンドに戻って find file のコマンドを打つと、ファイルは存在します。 どうすればよいのか、御存じの方よろしければ教えていただきたいです。

  • PHPで、PostgreSQLのエラーコードの取得

    環境:PHP5+PostgreSQL8+WindowsXP PostgreSQLのエラーコード(できればエラーメッセージも)を 取得したいのですが、 所得方法をご存知でしょうか?

    • ベストアンサー
    • PHP
  • pgsql.ini のファイルは何所にありますか。

    FedoraCore4にPostgresql7.4.6をソースからコンパイルしてインストールしました。 学習書に、 PHPインストール時に configureオプション  --with-config-file-scan-dir-DIR で指定したディレクトリにpgsql.ini をおく、と書いてあるのですが、私の場合、yumでPHP5.04 をインストールしています。 /usr/local/pgsql/の下に、bin,doc,include,lib,man,shareの各サブディレクトリはあります。 /etc/php.d ディレクトリはありますが、中は空です。pgsql.ini ファイルを見つけることが出来ません。 1.pgsql.ini ファイルは何所にあるのでしょうか? 2.新規に作成する必要があるのでしょうか? ググリましたが、適当な資料を探し得ませんでした。 pgsql.ini の編集と置き場について、良い参考資料を教えて頂ければ大変有難いです。

  • macのエラーコード -43について

    先日、PCを訳があってリカバリーして出荷時と同じ状態にしました。 リカバリー前にエクセルや写真等のファイルをHDDに移動させて リカバリー後に戻したら ファイルが開けなくて(zipから展開できない) 下記のエラーメッセージが出てしまいます。 「操作を完了できません。 予期しないエラーが起きました(エラーコード -43」 と出てきます。 エラーコード -43をググったのですが 出てこず困っています。 HDDからファイルを展開せず そのままPCに移動しようとしても いくつかの必要な項目が見つからなかったため、操作を完了できません。 (エラーコード -35) と出てきます。 宜しくお願いします。

    • ベストアンサー
    • Mac
  • C# ファイル削除のエラーコード

    言語:C# の質問です。(初心者 初めて1週間)  ファイルの削除を行った際に、別プロセスが使用中で、 削除できなかった場合に対して、別処理を行いたいです。  ファイルが削除できない場合は、エラーを取得することができるのですが、  別プロセスが使用中のみの制御を入れたいと思っています。  VB6では、ファイル削除(Kill)ができなかった場合に、 エラーコードを返して、該当するエラーコードのみに 別処理を行うことができていました。  それと同じことを、C#でも行いたいです。 処理としては、 1.ファイルの削除を行う 2.ファイルの削除が出来なかった場合に対してのみ、  別処理を入れる  (別プロセスが使用中のため削除できないファイルに対して)  このような処理を行いたいのですが、 ファイルが削除できなかった場合の、エラーコードを 求め方を色々調べてみたのですが、見つかりません。 下記ソースで、プログラムを作成中です。 try{    System.IO.File.Delete(@削除するファイル名); } cach(System.IO.IOException) {   //ここでエラーコードを取得し、該当するエラーコードのみに   //対して、別処理を入れたい   MessageBox.Show(err.Message); }   MessageBox.Show(err.Message);   ↑   もし、エラーコードが取得できないのであれば、  このエラーメッセージ文章に対してリテラルで制御をいれる  ことも考えています。 どうか、ご教授ください。 よろしくお願いいたします。

  • pl/pgsqlで再帰呼び出しは可能でしょうか。

    pl/pgsqlで再帰呼び出しは可能でしょうか。 PostgreSQLのバージョンは9.2.3です。 作成しているファンクションは正方形の中心座標を求めてInsertするものです。 指定した回数だけ、再帰的に正方形を4分割にどんどん細分化していき、 それぞれの正方形の中心座標をInsertします。 4分割にした正方形をそれぞれ以下のように番号を振って説明します。  左上・・・(1)  右上・・・(2)  左下・・・(3)  右下・・・(4) 元の正方形を求めた後、(1)→(2)→(3)→(4)の順に再帰的にファンクションを呼び出します。 パラメータを「3回」以上にした場合は、(1)についてもまた4分割していきます。 ここで、パラメータを「1回」とした場合は、元の正方形の中心座標は当然Insertできます。 パラメータを「2回」とした場合、(1)の正方形の中心座標も求まりますが、 (1)の正方形については再帰の最終処理のため、Insert後にRETURNすることで エラーとなっているのか、1つ目の正方形のレコードも(2)の正方形のレコードも Insertされていません。 さらにはその「RETURN句」が元のファンクションすら「終了」させているようで、 (2)、(3)、(4)の正方形の処理が行われません。 このように再帰呼び出しをしたいと思っても、再帰中の処理を終わらせ、 呼び出し元に戻らせるはずのRETURN句が、一番最初のファンクションの「終了」と 理解されてしまい、pl/pgsqlでは再帰呼び出しは実現できないのでしょうか。 ファンクションのイメージは以下の通りです。 CREATE OR REPLACE FUNCTION Insert_squre( IN kaisuu INT, --再帰的に呼び出す回数 IN count INT, --再帰回数をカウント IN X1 INT, --正方形の左上の頂点のX座標 IN Y1 INT, --正方形の左上の頂点のY座標 IN X2 INT, --正方形の右下の頂点のX座標 IN Y2 INT --正方形の右下の頂点のY座標 ) RETURNS void AS $$ DECLARE /* 変数定義 */ ・・・・・ BEGIN /* 中心座標を求める */ ・・・・・ /* 中心座標をInsert */ ・・・・・ /* kaisuu=countならばRETURN */ ・・・・・ /* (1)の正方形について再帰処理 */ select Insert_squre( IN kaisuu INT, --再帰的に呼び出す回数 IN count+1 INT, --再帰回数をカウント IN X1 INT, --正方形の左上の頂点のX座標 IN Y1 INT, --正方形の左上の頂点のY座標 IN X3 INT, --正方形の右下の頂点のX座標 IN Y3 INT --正方形の右下の頂点のY座標 ); /* (2)の正方形について再帰処理 */ ・・・・・ /* (3)の正方形について再帰処理 */ ・・・・・ /* (4)の正方形について再帰処理 */ ・・・・・ RETURN; END; $$ LANGUAGE PLpgSQL;

  • WSHのエラーコードについて

    お世話になります。 現在、Windows7 Pro端末よりWSHにて、WindowsServer2003上の 特定のファイルに毎分書き込む処理を行っております。 しかし、Windows7 Pro端末側で1日に3回ほど書込みに失敗(ファイル オープンエラー)となってしまいます。 エラーが発生する時刻はランダムです。 そこで、エラー発生時にエラーコードを表示するようにしたところ 『-2147024832』と表示されました。 このエラーコードはどのような意味があるのでしょうか? そもそも、マイナスから始まるエラーコードは存在するのでしょうか? 以上、ご教授お願い致します。