如果我有一个简单的查询:
OPEN cursor FOR
SELECT USER_ID FROM USER_TABLE WHERE USER_ID = V_SOME_USER;
这将返回不同行中的记录,但如何以下列格式返回行:
'userid1', 'userid2', 'userid3'.....'useridN'
我想这样做是因为我希望将其作为parameter
发送到另一个存储过程...此外,传递给string
时有多大的限制是什么? SP作为参数
到目前为止我所拥有的:
l_str varchar2(32767) default null;
l_sep varchar2(10) default null;
l_sep1 varchar2(10) default null;
begin
for x in ( SELECT USER_ID FROM USER_TABLE WHERE USER_ID = V_SOME_USER ) loop
l_str := l_str || l_sep || x.b || l_sep;
l_sep := '''';
l_sep1 := ''',';
end loop;
虽然这没有给出预期的结果
答案 0 :(得分:1)
虽然您应该探索其他方法。如果你需要,有一个简单的方法,虽然有一个问题。
您使用的是哪个版本的Oracle? Oracle 11gR2有一个很好的实现,LISTAGG
。
喜欢 -
SELECT LISTAGG(last_name, ', ')
WITHIN GROUP (ORDER BY hire_date, last_name) "Emp_list",
MIN(hire_date) "Earliest"
FROM employees
WHERE department_id = 30;
Emp_list Earliest
------------------------------------------------------------ ---------
Raphaely, Khoo, Tobias, Baida, Himuro, Colmenares 07-DEC-02
退房。