[pgsql-jp: 30530] Re: PL/pgSQLでの「'」を含んだ返り値の方法

ISHIDA Akio iakio @ pjam.jpweb.net
2003年 7月 20日 (日) 17:06:45 JST


こんにちは。石田@苫小牧市です。

Keisaku Imamura <imamura @ a-wave.net> wrote:
(2003/07/20 14:32)

> PL/pgSQLで『'』(シングルクォーテーション)を含んだTEXT値を返したいのですが、
> 方法が分りません。
> 
> --------------FUNCTION----------------------
> CREATE FUNCTION fn_getnextprogramtag(INTEGER,INTEGER) RETURNS TEXT AS '
> DECLARE
>     ncid ALIAS FOR $1;
>     ncno ALIAS FOR $2;
>     rec RECORD;
>     retval TEXT;
> BEGIN
>         select into rec pid from indexprogram where cid = ncid and cno = ncno+1;
>         retval := ''pid=\'''||rec.pid||''\'です'';
>         else
>                 retval := ''結果なし'';
>         end if;                     
>         return retval;
> END;
> ' LANGUAGE 'plpgsql';
> ---------------------------------------------
> 上記のrec.pidをシングルクォーテーションで囲みたいのですが、うまく行きません


create or replace function q1() returns text as '
begin
  return '''''''';
end
' language 'plpgsql';
=> select q1();
 q1
----
 '
(1 row)

なので、
         retval := ''pid=''''''||rec.pid||''''''です'';
ではどうでしょうか。

別の方法としては、
         retval := ''pid=''||quote_literal(rec.pid)||''です'';
でもよいと思います。
--
ISHIDA Akio<iakio @ pjam.jpweb.net>




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