Хм, похоже, вы хотите объединить адреса электронной почты. Это так? Если ДА, то:
DECLARE
email VARCHAR2(32000);
BEGIN
FOR cur_r IN (SELECT mail
FROM spam
WHERE ROWNUM < 500
)
LOOP
email := email ||','|| cur_r.mail;
DBMS_OUTPUT.PUT_LINE(cur_r.mail);
END LOOP;
email := RTRIM(email, ',');
END;
- вместо счетчика используйте
ROWNUM
- , вы не можете ожидать отображения всей строки (т.е. окончательного
email
значения ), поскольку его длина ограничена 255 символами
В качестве альтернативы, если вы не ожидаете, что строка результата будет длиннее 4000 символов, вы можете использовать LISTAGG
:
DECLARE
email VARCHAR2(32000);
BEGIN
SELECT LISTAGG(mail, ',') WITHIN GROUP (ORDER BY mail)
INTO email
FROM spam
WHERE ROWNUM < 500;
END;