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

toshihideka4316 @ zenrin.co.jp toshihideka4316 @ zenrin.co.jp
2010年 9月 9日 (木) 17:29:11 JST


片山です。お世話になります。
サーバ、クライアント共に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 メーリングリストの案内