第一段:GOTO循环用法
DECLARE
? x number;
BEGIN
? repeat_loop --循环点
? x := x - 1;
? dbms_output.put_line(x);
? IF x 0 THEN
? ? ? GOTO repeat_loop;? --当x的值0时,就goto到repeat_loop
? END IF;
END;
/*以上语句翻译如下:
declare 定义变量;
begin...end语句块
? x 变量赋值
? repeat_loop 设置循环点
? 循环内容
? ? ? x 变量递减
? ? ? 按行打印 x
? IF...END IF语句块
? ? ? IF...(条件) THEN :满足IF条件? 则
? ? ? GOTO语句 前往循环点
*/
第二段:FOR循环用法
? ? ? dbms_output.put_line(i);
? END LOOP;
--最简单的循环?
/*
declare 定义变量
? for...loop...end loop; 语句
第三段:WHILE循环用法
? WHILE x 1 LOOP
? ? ? x := x - 1;
? ? ? dbms_output.put_line('循环内'||x);
? dbms_output.put_line('循环外'||x);
begin...end 语句块
? while...loop...end loop; 语句
第四段:LOOP循环用法
? x number;
? x :=0;
? LOOP
? ? ? ? x := x ◆ 1;
? ? ? ? dbms_output.put_line('内'||x);
? END LOOP;
? dbms_output.put_line('外'||x);
begin...end
? x 变量赋值
? loop...end loop语句
? ? ? exit when ...(条件) ;
--1.For
FOR?循环变量?IN?[REVERSE]?下界..上界
LOOP
语句组
END?LOOP;
for?i?in?1..num?loop
resu:=?resu?*?i;
end?loop;
dbms_output.put_line(TO_CHAR(resu));
语法格式:
WHILE?条件?LOOP
--用WHILE循环求1~100所有整数的和?
summ?number?:=0;
WHILE?i0?LOOP
summ:=summ◆i;
i:=i?-?1;
dbms_output.put_line(summ);
使用loop循环,比如:
for item in (select a,b,c from table_a where 条件) loop
insert into table_b(a,b,c) values (item.a,item.b,item.c);
end loop;
也可以使用索引表循环,以上只是一个简单的例子,需要根据你的具体情况选择循环方式.
如果插入的数据有规律,可利用for、loop循环插入,主要用于批量生成测试数据
begin
for i in 1 .. 100 loop
insert into test(xh,mc) values(i||'','测试');
end ;.
table_exists_action参数控制导入动作:replace替换原表,truncate清除原表数据再导入,append增量导入数据,当然impdp数据泵的导入要依赖于directory路径.
create table temp_tab
(
id number primary key not null,
age number not null
);
declare
ids :=ids◆1;
age :=age◆1;
insert into temp_tab values(ids,names,age);
end;
Oracle中有三种循环(For、While、Loop):
①.、loop循环:
create?or?replace?procedure?pro_test_loop?is
i?number;
i:=0;
loop
i:=i◆1;
dbms_output.put_line(i);
exit;
end?if;
end?pro_test_loop;
create?or?replace?procedure?pro_test_for?is
end?pro_test_for;
create?or?replace?procedure?pro_test_cursor?is
userRow?t_user%rowtype;
cursor?userRows?is
select?*?from?t_user;
for?userRow?in?userRows?loop
dbms_output.put_line(userRow.Id||','||userRow.Name||','||userRows%rowcount);
end?pro_test_cursor;