Oracle SQL 将列粘贴到变量中

Oracle SQL paste column into variable

提前我刚开始使用 Oracle SQL 所以请多多包涵。 所以我想将我的 table 中的一列粘贴到一个变量中,问题是我必须通过在每个条目后添加一个“,”来调整我的变量。 以下是我为实现这一目标所做的尝试。

DECLARE
    email clob;
    counter int;
    set counter := 0;

BEGIN
    WHILE counter < 500
    LOOP
        SELECT mail INTO email FROM spam 
        email += ","
        DBMS_OUTPUT.PUT_LINE( 'Email : ' || email )
        DBMS_OUTPUT.PUT_LINE( 'Counter : ' || counter )
        SET @counter  = @counter  + 1
    END LOOP   
END

嗯,您似乎想要连接电子邮件地址。是这样吗?如果是,则:

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;