[pgsql-jp: 40447] Re: 自作関数nvlの挙動について

永浦 英興 nagaura @ order-made.co.jp
2010年 10月 13日 (水) 14:18:29 JST


 最低でもプログラムのソースと、エラーとなった際のNVL関数の
第一引数及び第二引数位は最低でも提示されませんと、無駄なやり
取りが発生し、問題解決が滞ります。

ソースの修正も辞さないならプログラム中のNVLをCOALESCEに変更
してみて下さい。それでもエラーが出るなら、INかOUTのパラメー
タ変数の定義に誤りがあると思われます。
若しくはPostgreSqlのODBCドライバのバグですかね。

> SQLの取得結果については、numeric(8桁)が100回連続で続き、その後に
> numeric(9
> 桁)が現れます。
これについても、1回のSQLの呼び出しでの取得か、個別のSQL呼び
出しかも判断が付きかねます。

> -----Original Message-----
> From: pgsql-jp-bounces @ ml.postgresql.jp
> [mailto:pgsql-jp-bounces @ ml.postgresql.jp]On Behalf Of
> toshihideka4316 @ zenrin.co.jp
> Sent: Wednesday, October 13, 2010 10:27 AM
> To: pgsql-jp @ ml.postgresql.jp
> Subject: [pgsql-jp: 40446] Re:自作関数nvlの挙動について
>
>
>  片山です。お世話になります。
>
> > 「APが異常終了」だけでは症状が伝わりません。
> > 正確なエラーメッセージ(APに返されるもの、DBのログに記録されるもの)
> > があると、回答が得やすいと思います。
> AP、DBのログ共にエラーメッセージなしでAPが落ちます。
> 追加で調査を行ったところ、
> DeclearFetch=1を指定した状態で接続し(ODBC接続)、クライントカーソルを
> 使
> 用して、
> SQLを発行するとAPが異常終了することまでわかりました。
> SQLの取得結果については、numeric(8桁)が100回連続で続き、その後に
> numeric(9
> 桁)が現れます。
> pgsql等のコンソールツールを用いてSQLを発行した場合は正常に取得できます。
>
> この挙動についてなにかご存知でしたら教えていただけないでしょうか。
>
> 以上よろしくお願いいたします。
>
> > -----Original Message-----
> > From: pgsql-jp-bounces @ ml.postgresql.jp
> > [mailto:pgsql-jp-bounces @ ml.postgresql.jp] On Behalf Of
> > Itagaki Takahiro
> > Sent: Thursday, September 09, 2010 5:48 PM
> > To: PostgreSQL Japanese Mailing List
> > Subject: [pgsql-jp: 40381] Re:自作関数nvlの挙動について
> >
> > 2010/9/9  <toshihideka4316 @ zenrin.co.jp>:
> > > サーバ、クライアント共にPostgreSQL ver8.2.4を使用しております。
> > > nvl(numeric, integer)、nvl(integer, integer)と2つの関数を作成して使用
>> てお
> > > りますが、AP内で自作のnvl(numeric, integer)を使用するとAPが異常終了す
る
>> 合が
> > > あり困っています。
> >
> > 「APが異常終了」だけでは症状が伝わりません。
> > 正確なエラーメッセージ(APに返されるもの、DBのログに記録されるもの)
> > があると、回答が得やすいと思います。
> >
> > --
> > Itagaki Takahiro
> >
>
> > -----Original Message-----
> > From: 片山 年秀
> > Sent: Thursday, September 09, 2010 5:29 PM
> > To: pgsql-jp @ ml.postgresql.jp
> > Subject: 自作関数nvlの挙動について
> >
> > 片山です。お世話になります。
> > サーバ、クライアント共にPostgreSQL ver8.2.4を使用しております。
> > nvl(numeric, integer)、nvl(integer,
> > integer)と2つの関数を作成して使用しておりますが、AP内で自作の
> nvl(numeric,
> > integer)を使用するとAPが異常終了する場合があり困っています。
> > (ODBC接続を使用)
> > numeric(8桁)を用いてnvl(numeric,
> > integer)を100回連続で呼び出した後に、第一引数をnumeric(9桁)でnvl呼び出し
>> 場合APが異常終了するようです。
> > (nvl(integer,integer)を明示的に呼び出すようにSQLを修正すると正常に動作し
>> す)
> > この挙動についてなにかご存知でしたら教えていただけないでしょうか。
> >
> > ↓NVLのソース↓
> > CREATE OR REPLACE FUNCTION nvl(numeric, integer)
> >   RETURNS numeric AS
> > $BODY$
> > declare
> >   n_str1 alias for $1;
> >   i_str2 alias for $2;
> > begin
> >   if n_str1 is null then
> >     return i_str2;
> >   else
> >     return n_str1;
> >   end if;
> > end;
> > $BODY$
> >   LANGUAGE 'plpgsql' VOLATILE;
> >
> >
> > CREATE OR REPLACE FUNCTION nvl(integer, integer)
> >   RETURNS integer AS
> > $BODY$
> > declare
> >   i_str1 alias for $1;
> >   i_str2 alias for $2;
> >   ret integer;
> > begin
> >   if i_str1 is null then
> >     ret := i_str2;
> >   else
> >     ret := i_str1;
> >   end if;
> >   return ret;
> > end;
> > $BODY$
> >   LANGUAGE 'plpgsql' VOLATILE;
> > 以上です。
> >



pgsql-jp メーリングリストの案内