PLSQL程序设计语言 联系客服

发布时间 : 星期六 文章PLSQL程序设计语言更新完毕开始阅读

PL/SQL:是过程化/sql的缩写,是Oracle在sql的基础之上扩展来的一种数据库编程语言,在兼容sql的基础之上,扩充了许多新功能,是面向过程化语言和sql的结合。 PL/SQL特点:

·除了基本的sql之外,包含了控制结构和异常处理,从而具有了

sql语句的简洁性和过程性。

·每个sql语句的请求处理,都会引起一次网络的传输,用户量一

旦大量增加,可能会导致网络堵塞,而PLSQL是将整个语句块发送给数据库服务器,减少了网络通信的数量,提高了应用程序的运行效率。

·PLSQL语句是存储在Oracle服务器上,可以被其他的PLSQL程

序或者sql调用。具有很高的重用性。

PLSQL程序块有两种:

·匿名块:没有名称,只用一次,不能存储在数据库中 ·命名块:指的是保存在数据库中的PLSQL程序块,比如我们的·PLSQL程序语言是一种块结构语言,PLSQL的基本代为是块。

存储过程、函数和触发器

块的基本结构:

·匿名块的基本结果

declare -- 可选 begin update dh02t_person set p_name='李四' where p_id = 14; --exception 可选 commit; end; declare:声明部分,用来声明程序中的变量、类型、游标等等。

declare pname varchar2(20) := '朱炳宇'; begin update dh02t_person set p_name=pname where p_id = 14; --exception 可选 commit;--提交 end;

begin:是PLSQL程序的主体部分,一般使用sql语句或者过程化语言来处理特定的操作。

exception:异常的处理部分,用来检查和处理异常或者错误。 块中的每一条语句都需要以分号结束,一条sql可以分成多行来写,但是最终只需要一个分号。

注释:在PLSQL中,注释分为两种,一种单行注释“--”,两外就是多行注释”/* 需要注释的内容*/”

范例:向表中插入一笔数据并且提交。

declare pid number(18) ; pname varchar2(20); psex number(1); pbir date; begin --给变量赋值 pid := 20; pname := '姜建民'; psex := 1; pbir := to_date('1988-11-12','yyyy-mm-dd'); insert into dh02t_person(p_id,p_name,p_sex,p_bir) values (pid,pname,psex,pbir); commit;--提交 end;

声明常量和变量

·声明常量:常量名 constant 类型(长度) := 值

declare pid constant number(18) := 29;--声明常量 begin pid := 90;--不能再次赋值 end; constant:表示的就是固定不变的,就是我们说的常量。声明之后不允许改变。

·声明变量:变量名 类型(长度) (not null) (default | := )

pid number(18) not null default 21;

声明变量和常量中一些规则:

·一行只能声明一个变量或者常量

·变量时存储值的内存区域,用来处理程序中的值,变量名称不

能重复,也不能使用系统关键字。

·变量名称以字母开头(不区分大小写),可以由字母,数字,下

划线组成。

·变量名称的长度不能超过30个字符

·分支结果

在PLSQL中分支分为两种: ·if then els(if then elsif then。。els)

·case(when 。。。else),是按照顺序检查表达式的值,如果一旦

找到,则跳出case语句。

范例:对dh02t_student表中的java_score成绩字段做一个等级。50-60:优,40-50:良,30-40:及格,30以下,挂了

·使用第一种语法

declare score number(2); level_score varchar2(3); begin select java_score into score from dh02t_student where stu_id=1;--将查询的值赋给变量score if score >=50 then level_score := '优'; elsif score >=40 then level_score := '良'; elsif score >=30 then level_score := '及格'; else level_score := '挂科'; end if; dbms_output.put_line(level_score); end; ·使用第二种语法:

declare score number(2); level_score varchar2(3); begin select java_score into score from dh02t_student where stu_id=1;--将查询的值赋给变量score case when score >=50 then