PL/SQL编程代表面向过程编程和SQL语言的结合
变量和类型
控制语句
过程和函数
PL/SQL编程的优点:
1)Oracle服务器有单独执行PL/SQL的引擎
2)PL/SQL块中的sql一次性发给服务器,提高系统的性能
3)PL/SQL可以使用所有的SQL语句,和SQL函数
SQL和PL/SQL比较
在数据库中修改一个学生的记录,如果没有该学生记录,就为该学生创建一个新记录。这里模拟一条PL/SQL编程:
declare /*定义变量类型*/ v_newMajor varchar2(10):='Chemistry'; v_firstName varchar2(10):='Scott'; v_lastName varchar2(10):='Tiger'; begin /*更新学生表*/ update students set major = v_newMajor where first_name = v_firstName and last_name = v_lastName; /*检查记录是否存在,如果不存在,则插入记录*/ if SQL%NOTFOUND then insert into students(stu_id,first_name,last_name,major) values (student_sequence.nextval,v_firstName,v_lastName,v_newMajor); end if; end; |
1> SQL和PL/SQL编译器集成:PL/SQL支持SQL所有语法
2> 支持CASE语句和表达式
3> 继承和动态方法释放
4> 类型进化:属性和方法可以添加到对象类型中,也可以从对象类型中删除
5> 新的日期和时间类型:TIMESTAMP可以记录包括秒的值
6> PL/SQL代码本地编译
7> 表函数和游标表达式:可以像表一样返回一个查询结果行集合
8> 增强批操作
9> MERGE语句126
可以在两种环境中存留
1. Oracle数据库服务器
2. Oracle开发工具
如果开发工具包括PL/SQL引擎,就可以处理PL/SQL块和子程序。开发工具把块传给PL/SQL引擎,引擎执行所有的过程语句,然后把SQL语句发给Oracle服务器。减少了服务器的负载。
一个简单的PL/SQL程序,描述PL/SQL的执行过程。
declare v_number sales.prod_id%type; v_comment varchar2(35); v_test varchar2(10):='See Here'; begin select min(prop_id) into v_number from sales; case when v_number < 500 then v_comment:='Tool small'; insert into temp_table(my_com,vcomment) values('This is only cazy',v_comment); when v_number < 1000 then v_comment:='A litter bigger'; insert into temp_table (my_com,vcomment) values('This is only luck',v_comment); when v_test:='See Here' then v_comment:='Test Model'; insert into temp_table (my_com,vcomment) values('This is Test',v_comment); else v_comment:='That enough'; insert into temp_table (my_com,vcomment) values ('Maybe good',v_comment); end if; end; |