以前学c++的,看oracle的while循环不太懂,好像没看到++1之类的语句,在plsql里面while要怎么写?
最好能给个简单的代码,能反映出while的用法的。
最好能给个简单的代码,能反映出while的用法的。
解决方案 »
- 有没有工具或快捷的方式把SQLserver 的SQL 命令转成Oracle 下格式的!?
- Oracle中如何判断字段中是否包含指定的字符串
- 求助~关于存储过程返回游标的问题~~~~(>_<)~~~~
- 谁帮忙看一下METALINK Bug 7308054的信息啊?
- 求LOGMINER可以查看那些日志文件
- 新手问题:请问如何写类似存储过程
- 如何方便的查找到跳号的值,主要为了解决主键不连续,存在跳号的问题
- 用大数据库建立小数据库有没有好办法?
- 一个简单问题:如何设置时间的系统默认值为:yyyy-mm-dd hh:mm:ss这样的格式?
- BLOB怎样定义?
- pl/sql看不到job,为什么?
- oracle 10g 导出报错问题
代码
exit when (条件)
end loop
这是for循环
while i <= 100 loop
t := t + i;
i := i + 1;
end loop;
end;
*/
代码
exit when (条件) //相当于if (条件){ break;}
end loop //循环结束
我看过一些别人写的存储过程,while里面没有写类似 i := i + 1;的loop条件。还问了那个写代码的人,他说自己会循环,我想了好久还是不明白,好像很少看见存储过程里面有像你这样写法的。
--在oracle循环中,没迭代一次,i就会自动加1,不需要显示设置+1
--下面是一个for循环,计算前20个fibonacci数:
DECLARE
A NUMBER;
B NUMBER;
C NUMBER;
BEGIN
A:=0;
B:=1;
C:=1;
FOR i IN 1..20 LOOP
DBMS_OUTPUT.PUT_LINE('the '||i||' number is:'||C);
C:=A+B;
A:=B;
B:=C;
END LOOP;
END; 详细,请参考:
oracle实现fibonacci数列
n number:=0;
begin
while n<100 loop
n:=n+1;
dbms_output.put_line('n='||n);
end loop;
end;
create or replace procedure proc_sum
(
v1 number,
v2 number,
tot out NUMBER
)
AS
i NUMBER;
BEGIN
tot:=0;
i:=v1;
WHILE(i<=v2) LOOP
tot:=tot+i;
i:=i+1;
END LOOP;
end;
/
--method two
create or replace procedure proc_sum
(
v1 number,
v2 number,
tot out NUMBER
)
as
BEGIN
tot:=0;
FOR i IN v1..v2 LOOP
tot:=tot+i;
END LOOP;
end;
/