Oracle 遍历表PL/SQL中的所有行

Oracle 遍历表PL/SQL中的所有行,oracle,plsql,Oracle,Plsql,我想从表1中收集某些列的值。首先,我曾尝试将一张表复制到另一张表,但在尝试时我卡住了: for row in row_count for column in column_count insert into table2 at (x,y) value from (row,column) column++ end row++ end 计算行数的第一个函数是: create or replace FUNCTION func_count_rows(ta

我想从表1中收集某些列的值。首先,我曾尝试将一张表复制到另一张表,但在尝试时我卡住了:

for row in row_count
    for column in column_count
        insert into table2 at (x,y) value from (row,column)
        column++
    end
row++
end
计算行数的第一个函数是:

create or replace FUNCTION func_count_rows(table_name IN varchar2,
debug boolean default false)
RETURN number IS
   total number(2) := 0;
BEGIN

IF debug = true THEN 

DBMS_OUTPUT.put('Function count rows: ');
DBMS_OUTPUT.PUT_LINE('select count(*) from ' || table_name || ';');
DBMS_OUTPUT.put('Returns: ');
DBMS_OUTPUT.PUT_LINE('');

   END IF;


execute immediate 'select count(*) from ' || table_name into total;

   RETURN total;
END;
然后我的程序首先打印值,但我卡在这里:

create or replace procedure gather_values (rows_quantity in VARCHAR2,
    column_count in VARCHAR2,
    debug boolean default false
    )
    is begin

    select 


    FOR i IN 1..rows_quantity LOOP
        DBMS_OUTPUT.PUT_LINE('#### ROW 1 ####');

        FOR i IN 1..94 LOOP

            END LOOP;

        END LOOP;
    end;
我不知道如何从表的精确(x,y)中获得列数量和值

你能帮帮我吗?多谢各位


我忘了告诉您我正在使用oracle SQL环境。

首先,这与PL/SQL没有任何共同之处:

for row in row_count
    for column in column_count
        insert into table2 at (x,y) value from (row,column)
        column++
    end
row++
end
见文件

要将所有行从一个表复制到另一个表,请执行以下操作:

insert into table2 (x,y) 
select a, b
  from table1;
它是一个简单的SQL查询,可以按原样使用,也可以在PL/SQL过程中使用

迭代表中的所有行有很多可能性。最简单的是:

for i in (select column1, column2, ... from table1) loop
  dbms_output.put_line(i.column1);
end loop;
另一种方式:

  • 使用游标
  • 使用集合
  • 使用动态SQL和dbms_SQL包
  • 要计算表中的行数,可以使用SQL查询:

    select count(*)
      from table1
    
    或者几乎相同的PL/SQL代码(您不需要使用
    executeimmediate
    ):


    但在任何情况下,您都不需要知道一个表包含多少行和列来迭代它们。您只需知道如何过滤,以及要迭代其中的哪一个。

    首先,这与PL/SQL没有任何共同之处:

    for row in row_count
        for column in column_count
            insert into table2 at (x,y) value from (row,column)
            column++
        end
    row++
    end
    
    见文件

    要将所有行从一个表复制到另一个表,请执行以下操作:

    insert into table2 (x,y) 
    select a, b
      from table1;
    
    它是一个简单的SQL查询,可以按原样使用,也可以在PL/SQL过程中使用

    迭代表中的所有行有很多可能性。最简单的是:

    for i in (select column1, column2, ... from table1) loop
      dbms_output.put_line(i.column1);
    end loop;
    
    另一种方式:

  • 使用游标
  • 使用集合
  • 使用动态SQL和dbms_SQL包
  • 要计算表中的行数,可以使用SQL查询:

    select count(*)
      from table1
    
    或者几乎相同的PL/SQL代码(您不需要使用
    executeimmediate
    ):

    但在任何情况下,您都不需要知道一个表包含多少行和列来迭代它们。你只需要知道如何过滤,你想迭代哪一个