当前位置:   article > 正文

Oracle - 循环 关键字 符号_oracle for while if else

oracle for while if else
一、Oracle判断
if(...)  then 
  PL/SQL语句;
elsif(...)  then
  PL/SQL语句;
else
   PL/SQL语句;
end if;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

二、Oracle循环

1. for循环

语法格式:
for 变量 in [revers] 变量初值..变量循环结束值 loop
	......
end loop;

示例1:
	for i in 1..10 loop

	      dbms_output.put_line(‘i =+ i);
	end loop;

示例2:
declare
	sum number :=0;
begin
	for i in (select sal from emp where empno between 7000 and 8000) loop
		sum:=sum+i.sal;
end loop;
	dbms_output.put_line('员工编号范围是7000到8000工资的和是'||sum);
end;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

2. while循环

语法格式:
	while 条件 
	loop
	      语句
	end loop

示例:
	DECLARE
		i number;
	BEGIN
		i:=0;
	WHILE i<9 LOOP
		i:=i+1;
		DBMS_OUTPUT.PUT_LINE('内:i='||i);
	END LOOP;
	DBMS_OUTPUT.PUT_LINE('外:i='||i);
END;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

3. loop循环

语法格式:
	loop
      循环语句
	end loop;

示例:
	DECLARE
		i number;
	BEGIN
		i:=0;
	LOOP
		i:=i+1;
		 EXIT WHEN i>9;
		DBMS_OUTPUT.PUT_LINE('内:i='||i);
	END LOOP;
	DBMS_OUTPUT.PUT_LINE('外:i='||i);
END;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

4. goto循环

示例:
	DECLARE
		i number;
	BEGIN
		i:=9;
	<<repeat_loop>>  --循环点
		i:=i-1;
		DBMS_OUTPUT.PUT_LINE(X);
		IF i>0    THEN
			GOTO repeat_loop;  --当i的值小于9时,就goto到repeat_loop
		END IF;
	END;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

三、Oracle关键字

1. in

where "列名" in ('value1','value2'...)
  • 1

2. or 或、and 与

and的优先级大于or的优先级

可以用in避免使用or	
	where date ='1996,06,04' or date ='1998,01,26'
	where date in('1996,06,04','1998,01,26')
  • 1
  • 2
  • 3
  • 4
  • 5

3. like

like的模糊查询,其通配符如下:

	% 表示零个或多个字符
	_ 单一任意字符
	\ 特殊字符
	[ ] 在某种范围内的字符,如[0-9][abcd]
	[^ ] 不在某种范围内的字符,如[^0-9][^abcd]

	like '%a%' 是指字符串中有a都算,%是一个或多个字符
	like '%a' 是指字符串中以a结尾
	like 'a%' 是指字符串中以a开头
	like '_a_' 是指字符串中有a都算,_只是一个字符
	like '_a' 是指字符串中以a结尾
	like 'a_' 是指字符串中以a开头
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

4. minus
  minus 直接翻译为中文是 “减” 的意思,在Oracle中也是用来做减法操作的,只不过它不是传统意义上对数字的减法,而是对查询结果集的减法。A minus B就意味着将结果集A去除结果集B中所包含的所有记录后的结果,即在A中存在,而在B中不存在的记录。
  Oracle的minus是按列进行比较的,所以A能够minus B的前提条件是结果集A和结果集B需要有相同的列数,且相同列索引的列具有相同的数据类型。此外,Oracle会对minus后的结果集进行去重。


四、Oracle符号

1. +

where A.ID(+)=B.ID  右外连接  相当于A right outer join B on ( A.ID=B.ID);
where B.ID=B.ID(+)  左外连接  相当于A left outer join B on ( A.ID=B.ID);
哪边有(+)哪边就允许为空
  • 1
  • 2
  • 3

2. ||

--字符串连接
相当于 mssql中的 +
例:  ‘abc’ || 'def' 结果为:'abcdef'
相当于 ‘abc’ + 'def'
  • 1
  • 2
  • 3
  • 4

五、Oracle游标使用
1.隐式游标
2.显示游标
3.ref 游标

oracle中open cursor forfor cursor in的区别如下:
	
	open cursor for是直接打开游标查询结果,适用于单表查询,
	结果集一般不会太大,用法如下:
	create or replace procedure zhazha.test(p_cursor out test.cursortype) as
	begin
		open p_cursor for  //打开游标
			select *from from test_table
	end test;
-------------------------------------------------------------------------------
	for cursor in是从大量数据中循环获取满足条件的记录,放入游标,用法如下:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

六、Remark

1. where 1 = 1

1=1 是永恒成立的,意思无条件的,也就是说在SQL语句里有没有这个1=1都可以
后面不用判断有没有where条件,直接加and…

这个1=1常用于应用程序根据用户选择项的不同拼凑where条件时用的。
如:web界面查询用户的信息,where默认为1=1,这样用户即使不选择任何条件,sql查询也不会出错。如果用户选择了姓名,那么where变成了where 1=1 and 姓名=‘用户输入的姓名’,如果还选择了其他的条件,就不断在where 条件后追加 and语句就行了。如果不用1=1的话,每加一个条件,都要判断前面有没有where 条件,如果没有就写where …,有就写and语句,因此此时用1=1可以简化了应用程序的复杂度

2. count / distinct

使用count(1)count(*)count(rowid)统计行数
	select count(1) from table1;null也算一条记录
	select count(*) from table1;
	select count(row) from table1;
	// 表示不包括为 null 的并去掉重复的,若rowid可能为空时,查询结果比前两个少
	select count(distinct row) from table1;
	

distinct  去重(查询结果显示时去重)
查找名字对应(去重)的ID
select *, count(distinct name) from table group by name

结果:
   id   name   count(distinct name) 
   1      a            1 
   2      b            1 
   3      c            2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

详解:SQL(基础查询)、SQL(关联查询)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/827230
推荐阅读
相关标签
  

闽ICP备14008679号