PL/SQL编程的小结·(声明变量,执行内容篇)

作为数据库补课或缺的一部分,PL/SQL有着很大的作用,还是以后的过程,触发器等等的基础,所以可以看的出来PL/SQL的重要,闲话少说,上干货。

PL/SQL的主要格式为:

declare(必写)
	要声明的变量名  变量类型;
	要声明的变量名  变量类型;
	……
	要声明的变量名  变量类型;
begin(必写)
要执行的内容
exception(可选)
要捕获的异常信息
end;(必写)
为了更好的理解,我做了一个不恰当的类比(java语言),希望对您有所帮助
		其中	“要声明的变量”	可和 int a,b;等类似,都是声明或定义出来,用作以后的使用
				”要执行的内容“  可和  system.out.pringtln(a+b);类似,但是我这只是一个类比,并不是完全相同,而这里的内容当然和对数据库的操作有关,而且不仅仅一个输出。

记住:不要忘了,在写PL/SQL编程前,先写出,set serveroutput on;语句,如果不写的话,你的输出语句,将不会在控制台输出任何语句。

  1. 首先,咱们先从声明变量说起:

     变量类型:
     (1) 和普通的数据库类型相同,例如:i number;	 即声明了一个number类型的变量i
     (2) 复制单行类型(记录变量) ,例如:v_empno emp.empno%type;	即声明了一个和emp表中的empno类型一致的变量v_empno
      (3) 复制多行类型(记录变量),例如v_emp_record  emp%rowtype; 即声明了一个和emp表中所有列类型一致的变量,你们可以把它想象成和emp相同的一个伪表,在声明时,此刻为空表,在以后的使用中,可直接使用“点”来调用不同的列名,实现调用。
     (4)特殊类型,这个是在建表等多数不会用到的类型,比较多,例如:游标,异常等,这就不细说了,声明方法同(1),只不过这类类型,大多在声明后还要做完善。
    

注意1:为了定义的变量更加美观,而且可读性更高,定义变量也存有一定的内容规范:
在这里插入图片描述
注意2:普通的数据库类型的变量和复制了单行类型的变量 可用“:=”进行赋初值。例:i number:=4;

另外,一些可用的运算符在下表,就不一一演示了:
在这里插入图片描述
2. 接下来就是“要执行的内容”
(1)条件结构:

		<1>if语句
			if  条件 then
			该条件下,想进行的操作
			end if;
			
			例:declare
						i number:=2;
				  begin
						if i=2 then
							dbms_output.put_line('if语句演示,条件符合');
						end if;
				 end;
						 这个是本篇博客中第一个完整的代码,下面解释一下:此段代码声明了一个变量i并赋初值2,判断i是否为2,若是,输出“if语句演示,条件符合”,在这里就想拓展一下,在sql里字符串的拼接,是使用“||”,而非“+”哦!!
			
				
			
			
		<2> if……else语句
			if  条件 then
			该条件下,想进行的操作
			else 
				其他情况要执行的操作
			end if;
			
			例:declare
					  	i number:=2;
				begin
						  if i=1 then
      							dbms_output.put_line('if……else语句演示,条件符合');
						 else
    						  dbms_output.put_line('if…… else语句演示,条件不符合');
						    end if;
				end;
		这个代码不想太多解释,和上个代码都是类似的,大家主要看这些格式,以后有新的知识存在我再解释,不浪费自己新买的键盘了,望见谅!!
		
		
		
	
		
		<3> if …… elsif …… elsif ………… else 语句
				if 条件 then
					该条件下,想进行的操作
				elsif 条件 then
					该条件下,想进行的操作
				elsif 条件 then
					该条件下,想进行的操作
				elsif 条件 then
					该条件下,想进行的操作
					………………
				else
				其他情况要执行的操作
				 end if;
				注意:此刻的elsif 和Java中的else if是有区别的,不要混淆呦!
				
				例:declare
					  	  i number:=2;
					begin
						  if i=1 then
     							 dbms_output.put_line('if……else if语句演示,条件1符合');
 							elsif i=2 then
     								 dbms_output.put_line('if…… else if语句演示,条件2不符合');
						   else
   						   dbms_output.put_line('if…… else if语句演示,条件不符合');
						end if;
					end;
<4>case语句
	case  要作为条件的变量等(可选)
	 when 条件表达式1 then
	 		该条件下,想执行的语句
	  when 条件表达式1 then
	 		该条件下,想执行的语句
		……………………
		else
			其他条件下,想执行的语句
		end case;
		
		例子1:
				declare
					   i number:=2;
				begin
						 case i
       							when 1 then dbms_output.put_line('if……else if语句演示,条件1符合');
        							when 2 then dbms_output.put_line('if…… else if语句演示,条件2不符合');
       							 else dbms_output.put_line('if…… else if语句演示,条件不符合');
						  end case;
				end;
				
				例子2:
					declare
					   i number:=2;
				begin
						 case 
       							when i=1 then dbms_output.put_line('if……else if语句演示,条件1符合');
        							when i=2 then dbms_output.put_line('if…… else if语句演示,条件2不符合');
       							 else dbms_output.put_line('if…… else if语句演示,条件不符合');
						  end case;
				end;
	注意:这两个代码,功能相同,结构类似,但是表达式条件在写法上稍有不同,你可以看看你喜欢用那种。

(2)循环结构

	<1>简单循环 loop……end loop;
		loop
				循环执行的语句
			exit when 循环结束条件
				循环条件更改
		end loop;
		例子:declare
							i number:=0;
				begin
						    loop
						        dbms_output.put_line(i);
   								 exit when i=10;
    							 i:=i+1;
						end loop;
			end;
	<2>while…… loop 语句
			while 条件结束语句 loop
					循环执行的语句
					循环条件更改
			end loop;
		
		例子:declare
								i number:=0;
				begin
							  while i<10  loop
						      	  dbms_output.put_line(i);
    								 i:=i+1;
							end loop;
				end;
	<3>for 语句
		for 循环变量 in 区域范围 loop
				循环执行的语句
		end loop;
		例子:declare
					begin
							  for i in 0 .. 10  loop
						    	    dbms_output.put_line(i);
							end loop;
				end;
		由我写的三个循环结构的代码,实现了基本相同的功能,但是明显看出来for语句是更加简洁,明了,但是这就说明for语句更好用吗?这不尽然,三条语句的偏重点是不一样的,for语句对顺序执行的循环有着得天独厚的优势,但若只有一个条件,那么while循环又比for循环更加舒服,其实大多数的循环是三者都可以表达出来的,但是哪一个循环更加的便捷,就靠你来发现了。
		另外,循环嵌套,你若是学习过C语言或Java语言,相信难不倒你,这里就不过多的进行啰嗦了。
		这里要说一下循环跳转:
		exit-------退出当前所在循环的所有循环
				这句话,很拗口,这是考虑了循环嵌套的原因,如果仅仅只有一个循环则,直接跳出循环,进行下面的语句执行。
		goto 无条件跳转 常常和"<<>>"配合使用
			例如:
				<<c>> i:=i+1;
				if i=3 then
					goto c;
				end if;
				这只是一个小小的演示,并没有太完善,大家进行参考
  1. 讲到这里,就该讲到异常处理,但是里面内容居多,而且本篇博客又很冗长,所以做了一个新的博客。
    链接如下:https://blog.csdn.net/minglinhwsrg/article/details/106032407
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值