我想在sql中执行for循环并将每个循环的输出保存在一个表中。
declare
type array_t is varray(3) of varchar2(10);
array array_t := array_t(4, 6, 7);
begin
for i in 1..array.count
loop
dbms_output.put_line(array(i)+1);
dbms_output.put_line(array(i)+10);
end loop;
end;
这段代码每次迭代都会给我 2 行输出。我想将它们保存在一个表中,但似乎找不到“附加”功能? 我想要的输出如下: 表:
5
14
7
16
8
17
您可以使用
DBMS_OUTPUT.PUT
代替 DBMS_OUTPUT.PUT_LINE
:
declare
type array_t is varray(3) of varchar2(10);
array array_t := array_t(4, 6, 7);
begin
for i in 1..array.count
loop
dbms_output.put(array(i)+1);
dbms_output.put(' ');
dbms_output.put_line(array(i)+10);
end loop;
end;
/
或者您可以使用单个
DBMS_OUTPUT.PUT_LINE
和字符串连接:
declare
type array_t is varray(3) of varchar2(10);
array array_t := array_t(4, 6, 7);
begin
for i in 1..array.count
loop
dbms_output.put_line((array(i)+1) || ' ' || (array(i)+10));
end loop;
end;
/
两者输出:
5 14
7 16
8 17
如果您想要结果集,那么您可以使用 SQL(而不是 PL/SQL):
SELECT COLUMN_VALUE + 1 AS value1,
COLUMN_VALUE + 10 AS value2
FROM TABLE(SYS.ODCIVARCHAR2LIST(4, 6, 7))
哪个输出:
价值1 | 价值2 |
---|---|
5 | 14 |
7 | 16 |
8 | 17 |