oracle 存储过程 数组循环

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 存储过程 数组循环相关的知识,希望对你有一定的参考价值。

table: student
name age
小一 14
小可 12
小二 17
小萨 18
写一个存储过程,定义一个数组或集合变量,循环把每个age +1

参考技术A declare
type typ_rec is record of (student.name%type, student.age%type); --集合变量
type typ_tab is table of typ_rec index by binary_integer; --以集合变量为单位的table数组
rec_sql typ_rec;
another_rec student%rowtype; --跟rec_sql一样
begin
--for循环里的rec_tmp不用定义,可以自动生成的
for rec_tmp in (select t.name, t.age from student t) loop
dbms_output.putline(rec_tmp.name || ' ''s age + 1 = ' || to_char(rec_tmp.age + 1) );
end loop;
exception
when others then
return;
end;本回答被提问者采纳
参考技术B 12

存储过程中For循环怎么写啊?

CREATE PROCEDURE AddStudents AS
Begin
Declare @n bigint =0
Declare @Sql nvarchar(225)

FOR @n IN 1 .. 100 LOOP


Set @Sql='Insert into Students Values('Hamunet',10,'SianChina','123456789123')'
Exec (@Sql)

End Loop
End
我的意思是想向Students中插入10000条相同的记录!
可是怎么写呢?

方法和详细的操作步骤如下:

1、第一步,编写存储过程的整体结构,定义变量,见下图,转到下面的步骤。

2、第二步,完成上述步骤后,定义游标,具体的代码见下图,转到下面的步骤。

3、第三步,完成上述步骤后,编写一个for循环,游标for循环开始,然后临时返回变量名,从任意一个开始,使用变量名.列名,最后循环的游标结束,见下图,转到下面的步骤。

4、第四步,完成上述步骤后,运行测试,请单击“ DBMS Output”选项卡进行检查,见下图。这样,就解决了这个问题了。

参考技术A SQL Server 中没有For循环,可以使用while循环代替,另外你写的存储过程还有几处有问题,一并给你改过来了。
CREATE PROCEDURE AddStudents AS
Begin
Declare @n bigint
Declare @Sql nvarchar(225)
set @n=0
while @n<10000
begin
Set @Sql='Insert into Students Values(''Hamunet'',10,''SianChina'',''123456789123'')'
Exec (@Sql)
set @n=@n+1
End本回答被提问者采纳

以上是关于oracle 存储过程 数组循环的主要内容,如果未能解决你的问题,请参考以下文章

oracle存储过程怎么写循环

oracle存储过程中循环for in是如何使用的

oracle 存储过程循环插入数据不定时出现卡死,求高手指点,循环过程如下:

oracle存储过程中循环for in是如何使用的

oracle 执行存储过程 无法中断 但是是循环执行 怎么办

java字符串数组作为参数传递oracle存储过程