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