[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 メーリングリストの案内