将循环输出保存在oracl SQL中的单个表中

问题描述 投票:0回答:1

我想在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
oracle-database plsql
1个回答
0
投票

您可以使用

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

小提琴

© www.soinside.com 2019 - 2024. All rights reserved.