Oracle 遍历表PL/SQL中的所有行
我想从表1中收集某些列的值。首先,我曾尝试将一张表复制到另一张表,但在尝试时我卡住了: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
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;
另一种方式:
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;
另一种方式:
select count(*)
from table1
或者几乎相同的PL/SQL代码(您不需要使用executeimmediate
):
但在任何情况下,您都不需要知道一个表包含多少行和列来迭代它们。你只需要知道如何过滤,你想迭代哪一个