oracle 存储过程 数组循环
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 存储过程 数组循环相关的知识,希望对你有一定的参考价值。
table: student
name age
小一 14
小可 12
小二 17
小萨 18
写一个存储过程,定义一个数组或集合变量,循环把每个age +1
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 存储过程循环插入数据不定时出现卡死,求高手指点,循环过程如下: