2

ここで、文字列を次のように連結しようとしています,:

CREATE FUNCTION looping() RETURNS TABLE(round text)
DECLARE
  i RECORD;
BEGIN

FOR i IN select regexp_split_to_table('33,55,66,88', ',') as "asd"
LOOP
  str:= str || ',' ||(select  i."asd");
END LOOP;

END;
$$ LANGUAGE plpgsql; 

それは本当ですか、それとも何か不足していますか?

4

1 に答える 1

6

多くの場合、標準 SQL 関数を使用したセットベースの操作は、ループよりも優れています。
しかし、plpgsql で制御構造が必要な場合は、次のように動作します (多くの方法の 1 つ):

CREATE FUNCTION f_loop2(OUT str text)
  RETURNS text AS
$func$
DECLARE
   i text;
BEGIN
str := '';

FOR i IN
   SELECT regexp_split_to_table('33,55,66,88', ',')
LOOP
  str :=  str || ',' || i;
END LOOP;

END
$func$ LANGUAGE plpgsql; 
于 2013-10-29T05:46:36.440 に答える