`
chenhua_1984
  • 浏览: 1252322 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

PLSQL开发基础--结构控制

阅读更多
--匿名块
set serveroutput on;
begin
    dbms_output.put_line('this is an anonymous block');
end;
/ 

--不考虑无数据异常
declare
   v_sname varchar2(200);
begin
		select name into v_sname from students t where t.student_id=10381;
		dbms_output.put_line('name is'||v_sname);
end;
/

--捕获空异常
declare
   v_sname varchar2(200);
begin
		select name into v_sname from students t where t.student_id=10381;
		dbms_output.put_line('name is'||v_sname);
		exception
			when no_data_found then
			   dbms_output.put_line('no data found');			   
end;
/

--注释的例子,此例子包含CASE语法,%数据类型,&表示输入
declare
	v_id teachers.teacher_id%type;
	v_job_title teachers.title%type;
begin
	v_id:=&teacher_id;
	select title into v_job_title from teachers t where t.teacher_id=v_id; --将教师标号为V——id的教师职称赋值给变量
	
	case
	  when v_job_title='教授' then
	    update teachers set wage=1.1*wage where teacher_id=v_id;
	  when v_job_title='高级工程师' or v_job_title='副教授' then
	    update teachers set wage=1.05*wage where teacher_id=v_id;
	  else
	    update teachers set wage=wage+100 where teacher_id=v_id;
	  end case;
end;
/



--注释的例子,此例子包含CASE语法,%数据类型,异常处理
declare
	v_id teachers.teacher_id%type;
	v_job_title teachers.title%type;
begin
	v_id:=&teacher_id;
	select title into v_job_title from teachers t where t.teacher_id=v_id; --将教师标号为V——id的教师职称赋值给变量
	exception 
			when no_data_found then
			dbms_output.put_line('no teachear be found');
	case
	  when v_job_title='教授' then
	    update teachers set wage=1.1*wage where teacher_id=v_id;
	  when v_job_title='高级工程师' or v_job_title='副教授' then
	    update teachers set wage=1.05*wage where teacher_id=v_id;
	  else
	    update teachers set wage=wage+100 where teacher_id=v_id;
	end case;
end;
/

--假如只有1个值,那么可以这样写,假如比较的条件比较多,那么换上面的写法
declare
	v_id teachers.teacher_id%type;
	v_job_title teachers.title%type;
begin
	v_id:=&teacher_id;
	select title into v_job_title from teachers t where t.teacher_id=v_id; --将教师标号为V——id的教师职称赋值给变量
	exception 
			when no_data_found then
			dbms_output.put_line('no teachear be found');
	case v_job_title
	  when '教授' then
	    update teachers set wage=1.1*wage where teacher_id=v_id;
	  when '高级工程师' then
	    update teachers set wage=1.05*wage where teacher_id=v_id;
	  else
	    update teachers set wage=wage+100 where teacher_id=v_id;
	end case;
end;
/


--在PLSQL中执行select语句,
select * from departments;
declare
		v_id departments.department_id%type;
		v_name departments.department_name%type;
		v_address departments.address%type;
	begin
	    select * into v_id,v_name,v_address from departments where department_id=&department_id;
			
			dbms_output.put_line('系部名称:'||v_name);
			dbms_output.put_line('系部地址:'||v_address);
end;
/


--行类型的数据类型 ,异常处理应该写到select into 之后?还是输出之后?还是只要有异常处理,写到哪里都没有关系,oracle会自动需找异常处理的代码?
--假如有些异常不可预料,怎么写?
declare
		v_student students%rowtype;
		begin
		 select * into v_student from students where student_id =&student_id;
		 dbms_output.put_line('name sex birthday');
		 dbms_output.put_line(v_student.name || v_student.sex||v_student.dob);
		 exception 
		    when no_data_found then
		      dbms_output.put_line('no data found');
		 /*在表中执行select into 这条语句,如果返回值为空,那么会抛出no_data_found异常,
		 
		 如果返回的结果过多,那么则会抛出too_many_row异常*/		 
		end;		
/

--假如没有找到数据,什么都不做
declare
		v_id teachers.teacher_id%type;
		v_title teachers.title%type;
begin
		v_id:=&teacher_id;
		select title into v_title from teachers where teacher_id=v_id;
		exception 
				when no_data_found then
				null;
		if v_title='' then
				update teachers set wage=1.1*wage where teacher_id=v_id;		
		else
				update teachers set wage=wage+100 where teacher_id=v_id;
		end if;
end;

---多次elsif的例子
declare
		v_id teachers.teacher_id%type;
		v_title teachers.title%type;
begin
		v_id:=&teacher_id;
		select title into v_title from teachers where teacher_id=v_id;
		exception 
				when no_data_found then
				null;
		if v_title='' then
				update teachers set wage=1.1*wage where teacher_id=v_id;		
		elsif v_title='aaa' then
		
				update teachers set wage=wage+100 where teacher_id=v_id;
		elsif  v_title='ccc' then
				null;
		else
				null;
		end if;
end;
--loop循环的例子
create table total(n int ,reault int);

declare
		v_i int:=1;
		v_sum int:=0;
begin
		loop
		v_sum:=v_i+1;
		insert into total values (v_i,v_sum);
		
		exit when v_sum=10;
		v_i:=v_i+1;
		end loop;
end;
/

select * from total;

--while 循环的例子
declare
		v_i INTEGER:=1;
		v_sum INTEGER:=0;
begin
		while v_i<=10 loop
			v_sum:=v_i+1;
			insert into total values(v_i,v_Sum);
			v_i:=v_i+1;
			end loop;
			commit;
end;
/
select * from total;

--for循环的测试例子

declare
	v_i int:=1;
	v_sum int :=1;
begin
	for v_i in 1..100 loop
		v_sum:=v_i*1;
	  insert into total values (v_i,v_sum);
	end loop;
	commit;
end;
/
select * from total;
 
分享到:
评论

相关推荐

    PLSQL高级编程-结构化编程

    总结,"PLSQL高级编程-结构化编程"涵盖了从基本的语法结构到复杂的并发控制和性能优化等多个方面。理解并掌握这些知识点,将使你在Oracle数据库的开发和维护中更加得心应手。通过深入学习和实践,你可以编写出高效、...

    plsql---语法

    在实际开发中,掌握PL/SQL语法是数据库管理、数据操作和业务逻辑实现的基础。通过`Sqlhelp.hlp`和`Plshelp.hlp`这样的帮助文件,开发者可以快速查找和理解特定的函数、语法点,提高编程效率。同时,不断实践和学习...

    PLSQL编程规范-v1.0.docx

    **PL/SQL编程规范** PL/SQL编程规范是Oracle数据库开发中的重要组成部分,它旨在确保代码的可读性、可维护性和团队协作的有效性。...这不仅有助于当前的开发工作,也为未来的项目提供了一个坚实的基础。

    ORACLE 数据库开发_PLSQL基础.doc

    大量源码案例,手把手教你PLSQL数据库开发。内容预览: ---- 第一章 PL/SQL 简介 ---- ---- 第二章 PL/SQL程序结构 ---- ---- 第三章 变量与数据类型 ---- ---- 第四章 PL/SQL控制语句 ---- ---- 第五章 PL/SQL游标 ...

    PLSQL基础入门教程-必看

    其次,PLSQL可以提高数据库的安全性,因为它可以对数据库进行严格的访问控制和权限管理。最后,PLSQL可以提高数据库的性能,因为它可以将复杂的业务逻辑封装在一个过程中,从而减少数据库的负载。 PLSQL可用的SQL...

    Oracle+PLSQL开发基础

    Oracle PL/SQL 开发基础是一门面向需要在Oracle数据库上进行数据查询和代码查看的测试人员的基础教程。这门课程的目标是使学员能够熟练掌握Oracle的PL/SQL编程语言,以便有效地管理和操作数据库。课程作者为质控办的...

    PLSQL简易教程学过以后plsql不愁

    本文将讲述 PLSQL 基础语法,结构和组件、以及如何设计并执行一个 PLSQL 程序。 PLSQL 的优点 ---------------- PLSQL 是一种高性能的基于事务处理的语言,能运行在任何 ORACLE 环境中,支持所有数据处理命令。...

    plsql--编程进阶

    它将SQL的强大数据处理能力和传统过程化编程语言的控制结构结合起来,使得开发人员能够编写出更加复杂和高效的数据库应用程序。 - **模块化结构**:PL/SQL支持模块化的编程方式,可以将程序分割成独立的单元,每个...

    PLSQL应用程序开发

    - **循环控制**:通过`LOOP`, `FOR LOOP`, 和`WHILE LOOP`等循环结构控制程序重复执行某些操作。 - **异常处理**:使用异常处理结构(如`EXCEPTION`块)来捕获和处理运行时错误,确保程序的健壮性。 #### 五、PLSQL...

    PLSQL教程-从入门到精通

    PL/SQL(Procedure Language for SQL)是一种专门为Oracle数据库设计的过程化语言,它结合了SQL的数据操作能力与传统过程化语言的控制结构,使得开发者能够在数据库内部编写高效、复杂的应用程序。 ##### 1.2 SQL与...

    PLSQLDeveloper11+汉化exe+instantclient-basic-nt-11.2.0.4.0.zip

    PLSQL Developer是一款强大的Oracle数据库开发工具,由Allround Automations公司开发,专为数据库管理员和开发者设计。在“PLSQLDeveloper11+汉化exe+instantclient-basic-nt-11.2.0.4.0.zip”这个压缩包中,包含了...

    PLSQL学习基础课件PPT

    通过这份“PLSQL基础学习学习课件”,初学者可以逐步了解并掌握PLSQL的基本概念、语法和应用,为进一步的数据库开发和管理打下坚实基础。这份课件将详细解析上述知识点,并通过实例演示如何编写和执行PLSQL代码,...

    Oracle PLSQL开发基础.pdf

    ### Oracle PL/SQL开发基础知识点概述 #### 一、PL/SQL 语言基础 ##### 1.1 什么是 PL/SQL PL/SQL (Procedural Language for SQL) 是一种专为 Oracle 数据库设计的过程化语言。它结合了 SQL 的强大功能与过程化的...

Global site tag (gtag.js) - Google Analytics