gpt4 book ai didi

oracle - 遍历表 PL/SQL 中的所有行

转载 作者:行者123 更新时间:2023-12-05 01:19:10 24 4
gpt4 key购买 nike

我想从表 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

参见文档 here .

将所有行从一个表复制到另一个:

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;

另一种方式:

  1. 使用游标
  2. 使用集合
  3. 使用动态 SQL 和 dbms_sql 包

要计算表中的行数,可以使用 SQL 查询:

select count(*)
from table1

或者几乎相同的PL/SQL代码(你不需要使用execute immediate):

declare
total number;
begin
select count(*)
into total
from table1;
dbms_output.put_line('count of rows: ' || total);
end;
/

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

关于oracle - 遍历表 PL/SQL 中的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41048162/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com