oracle循环语句loop,oracle循环语句loop

Oracle循环语句的写法有哪些呢

如果您对Oracle循环语句方面感兴趣的话,不妨一看。

loop循环: 1。 create or replace procedure pro_test_loop is 2。

i number; 3。 begin 4。

i:=0; 5。 loop 6。

ii:=i+1; 7。 dbms_output。

put_line(i); 8。 if i》5 then 9。

exit; 10。 end if; 11。

end loop; 12。 end pro_test_loop; while循环: 1。

create or replace procedure pro_test_while is 2。 i number; 3。

begin 4。 i:=0; 5。

while i《5 loop 6。 ii:=i+1; 7。

dbms_output。 put_line(i); 8。

end loop; 9。 end pro_test_while; for循环1: 1。

create or replace procedure pro_test_for is 2。 i number; 3。

begin 4。 i:=0; 5。

for i in 1。

5 loop 6。 dbms_output。

put_line(i); 7。 end loop; 8。

end pro_test_for; for循环2: 1。 create or replace procedure pro_test_cursor is 2。

userRow t_user%rowtype; 3。 cursor userRows is 4。

select * from t_user; 5。 begin 6。

for userRow in userRows loop 7。 dbms_output。

put_line(userRow。Id||','||userRow。

Name||','||userRows%rowcount); 8。 end loop; 9。

end pro_test_cursor;。

oracle中常用的一些语句有哪些

1、Oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的, rowid确定了每条记录是在ORACLE中的哪一个数据文件、块、行上。

2、在重复的记录中,可能所有列的内容都相同,但rowid不会相同,所以只要确定出重复记录中 那些具有最大rowid的就可以了,其余全部删除。 实现方法: SQL> create table a ( 2 bm char (4), --编码 3 mc varchar2(20) --名称 4 ) 5 / 表已建立。

SQL> insert into a values('1111','1111'); SQL> insert into a values('1112','1111'); SQL> insert into a values('1113','1111'); SQL> insert into a values('1114','1111'); SQL> insert into a select * from a; 插入4个记录。 SQL> commit; 完全提交。

SQL> select rowid,bm,mc from a; ROWID BM MC ------------------ ---- ------- 000000D5。0000。

0002 1111 1111 000000D5。 0001。

0002 1112 1111 000000D5。0002。

0002 1113 1111 000000D5。0003。

0002 1114 1111 000000D5。0004。

0002 1111 1111 000000D5。0005。

0002 1112 1111 000000D5。0006。

0002 1113 1111 000000D5。0007。

0002 1114 1111 查询到8记录。 查出重复记录 SQL> select rowid,bm,mc from a where a。

rowid!=(select max(rowid) from a b where a。bm=b。

bm and a。mc=b。

mc); ROWID BM MC ------------------ ---- -------------------- 000000D5。 0000。

0002 1111 1111 000000D5。0001。

0002 1112 1111 000000D5。0002。

0002 1113 1111 000000D5。0003。

0002 1114 1111 删除重复记录 SQL> delete from a a where a。 rowid!=(select max(rowid) from a b where a。

bm=b。bm and a。

mc=b。mc); 删除4个记录。

SQL> select rowid,bm,mc from a; ROWID BM MC ------------------ ---- -------------------- 000000D5。 0004。

0002 1111 1111 000000D5。0005。

0002 1112 1111 000000D5。0006。

0002 1113 1111 000000D5。0007。

0002 1114 1111。

请问这个oracle的for循环语句怎么写

create table temp_tab( id number primary key not null, name varchar2(50) not null, age number not null);declare ids number(30) :=0; names varchar2(50) :='卡卡'; age number(30) :=5;begin for i in 1..15 loop ids :=ids+1; age :=age+1; insert into temp_tab values(ids,names,age); end loop;end;。

Oracle中循环语句的几种用法

--1.For FOR IN [REVERSE] LOOP END LOOP; --计算5的阶乘,并在屏幕上打印出来。

DECLARE num NUMBER(3):=5; resu NUMBER(3):=1; BEGIN for i in 1..num loop resu:= resu * i; end loop; dbms_output.put_line(TO_CHAR(resu)); END;--2.WHILE循环语法格式: WHILE LOOP END LOOP; --用WHILE循环求1~100所有整数的和 DECLARE summ number :=0; i number(3):=100;BEGIN WHILE i>0 LOOP summ:=summ+i; i:=i - 1; END LOOP; dbms_output.put_line(summ);END;。

oracle 循环语句的问题

划分区域的表有么?

应该建立一张划分区域的表,表内表名经度和纬度的边界,我举个例子(仅为举例,具体边界自己掌握),假设你定义纬度为南纬10°到北纬10°,东经10°到西经10°为一个区域,那么再这张表中,至少要有这些边界数据,另外还要有区域编号等内容。(具体内容自己考虑,可能还需要其他内容)

然后另外一张表中,只要判断大于小于就好了,假设一个坐标为北纬5°,东经7°,那么就是在这个区域内。这块就是两次截取+判断(不能只判断小于,也要判断大于,这里就是大于0,小于10,其他还有大于10,小于20之类的,也可以加入北纬,东经等判断字样,这个就要看你表的设置了),前面输出的是在已经建立的边界表的区域编号就可以了,不需要循环。

用循环做,那么就不用建立这张表,但是如果这样的话,别人会不知道你的区域表示的是什么,你还要挨个解释,不是很麻烦。

个人考虑区域划分表的内容(考虑不把东西经南北纬放在一起,与上面的例子有所不同)

区域编号 东西经 南北纬 最低纬度 最高纬度 最低经度 最高经度

1 东经 北纬 0 20 0 20

都是这样的内容,然后你在表中存储的是东经15度,北纬5度。

那么就可以通过substr截取,东西经和南北纬相等,在最低和最高之间,那么就显示区域编号,只是截取的次数多了一点。

oracle循环排序语句

sqlserver或者oracle如下:

创建表,数据:

create table t(id int,star int) insert into t values (1,1)insert into t values (2,3)insert into t values (3,5)insert into t values (4,2)insert into t values (5,2)insert into t values (6,1)insert into t values (7,5)insert into t values (8,4)insert into t values (9,2)insert into t values (10,2)insert into t values (11,3)insert into t values (12,3)insert into t values (13,4)

执行:

select id,star from(select t.*,row_number() over (partition by star order by id) rn from t) tmporder by rn,star

结果大概这个样子:

其他数据库另说,就没这么简单了。

请教大神,oracle数据库循环语句怎么写

假设表中字段分别为:student 中字段:class_id, student_name,score,pass(number类型)class中字段:class_id,class_nameselect c.class_name,count(*) total ,sum(pass) as pass_count,sum(pass)/count(*) as pass_ratiofrom student s,class cwhere s.class_id=c.class_idgroup by c.class_name。

oracle sql怎么写循环语句

declare

sql_tem Varchar2(4000);

a number;

b number;

i number;

begin

a := 1;

for i in 1 .. 3 loop

b := a + 4;

sql_tem := 'insert into A2 (ID,NAME) (select ID,NAME from A1 WHERE ROWNUM between :1 and :2)';

EXECUTE IMMEDIATE sql_tem

USING a, b;

commit;

a := a + 5;

end loop;

end;

试试上面的代码看一下能不能满意你的要求先呗。。

转载请注明出处华阅文章网 » oracle循环语句loop