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;
提前我刚开始使用 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;