[pgsql-jp: 27940] PL/pgSQLのWHERE句条件のシングルクォートについて質問です

Takeshi Yoshida yoshida @ tkm.att.ne.jp
2002年 11月 12日 (火) 10:11:48 JST


お世話になっております。吉田です。

PL/pgSQL構文のシングルクォーテーション(')のくくり方で
質問がございます。

以下のように%ROWTYPE変数を宣言し、SELECT INTOの結果を代入
したいと思っております。

	nas_rd      nas_info%ROWTYPE;

で、WHERE条件の対象カラムが、inet型の場合のシングルクォーテーション
のくくり方でエラーが発生し、先に進めないでおります。

いちおう考えられるパターンを試してみましたが、エラーが発生いたします。

・・・単純な問題だと思いますが、どなたかご教授願います。


[環境]
	SPARC SOLARIS	5.8
	PostgreSQL	7.2.2
	GCC		2.95.2


-------------------------------------------------------------------------
<パターン 1>

シングルクォートでくくらない。


[構文]
SELECT INTO nas_rd * FROM nas_info WHERE nas_ip_addr = NEW.nas_ip_addr;

[エラー]
NOTICE:  Error occurred while executing PL/pgSQL function session
NOTICE:  line 31 at select into variables
ERROR:  Unable to identify an operator '=' for types 'inet' and 'text'
        You will have to retype this query using an explicit cast

-------------------------------------------------------------------------
<パターン 2>

ただ単純に2重でくくる

[構文]
SELECT INTO nas_rd * FROM nas_info WHERE nas_ip_addr = ''NEW.nas_ip_addr'';

[エラー]
NOTICE:  Error occurred while executing PL/pgSQL function session
NOTICE:  line 31 at select into variables
ERROR:  invalid INET value 'NEW.nas_ip_addr'

-------------------------------------------------------------------------
<パターン 3>

2重クォートを文字列結合する

[構文]
SELECT INTO nas_rd * FROM nas_info WHERE nas_ip_addr = '' ||
NEW.nas_ip_addr || '';

[エラー]
NOTICE:  Error occurred while executing PL/pgSQL function session
NOTICE:  line 31 at select into variables
ERROR:  invalid INET value ' || NEW.nas_ip_addr || '

-------------------------------------------------------------------------




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