1,过程,函数,触发器是PL/SQL编写的
2,过程,函数,触发器是存放在甲骨文数据库中的
3 PL/SQL是非常强大的过程化语言
4,过程,函数,触发器可以在java程序中调用
PL/SQL编写能节省一点时间就是提高了性能(量大),java直接调用数据库存放的过程,解析时间就节省下来了,提高了性能
模块化的设计思想- - - - - -》存储过程
网络传输(java程序中编写的SQL语言),直接调用数据库的过程节省了传输量
提高安全性(存储过程避免了数据库信息的泄漏)
缺点:
移植性不好
PL/SQL编程基本单位是块,通过块可以编写出过程,函数,触发器,包
下面进行一个最基本的编程
案例:向某表中插入一条数据
创建或repalce过程名称:替换表示如果名称已存在,就替换
开始插入测试值(“小明”,“红帽”)
,
/
创建程序创建存储过程关键字
或repalce:表示如果名称已存在,就替换
是:也是关键字
存储过程定义的头和开始之间是定义部分(定义变量常量等等),后面提到
开始:关键字
结束:结束符
开始与结束结束之间就是执行部分
上面一个简单的存储过程是向某表中添加一条数据,现在先创建一张表
完成创建表名(名varchar2(20),密码varchar2 (30),
创建表。
然后通过编写一个存储过程向其中添加数据
完成创建或替换过程sp_pro1是
,2,开始
,3,插入名称值(“小明”,“红帽”);
,4,最后,
,5,/
程序创建。
存储过程已建立,该如何执行呢?使用关键字执行或者,如下
完成exec sp_pro1;
PL/SQL过程成功完成。
然后查询表,看是否添加了数据
完成select * from名称;
名称,,,,,,,,密码
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
小明,,,,,,redhat
当若编写的过程有误时,可以通过显示错误这条命令查看错误具体信息
pl/sql编程是由最小单位块组成的,看看块的组成部分
pl/sql块由三个部分组成:定义部分,执行部分,例外处理部分
声明,定义部分,定义常量,变量,游标,例外,复杂数据类型,
开始执行部分,要执行的pl/sql语句和sql语句
例异常外处理部分,处理运行的各种错误
定义部分是从宣布开始的,可选
执行部分从开始开始,必选
例外处理部分从异常,可选
下面编写一条最简单的块,输出hello world
编写之前打开系统的屏幕输出信息,不然看不到效果
完成设置serveroutput;
完成开始
,2,dbms_output。put_line (“hello world”);
,3,最后,
,4,/
hello world
PL/SQL过程成功完成。
最简单的块编程,只有执行部分,而且只输出了一条信息hello world。
相关说明:dbms_output是甲骨文所提供的包(类似java的开发包),该包包含一些过程,put_line就是
dbms_output包的一个过程(包里面的一个过程)
实例2:包含定义部分和执行部分
完成declare
,2,v_name varchar2 (20);,,改行表示定义的变量,变量名v_name,数据类型为varchar2
,3,开始
,4,选择从emp ename成v_name empno=, empno;,,由键盘输出
,5,dbms_output.put_line (v_name);
,6,,
,7,/
输入为empno值:7788
,4:选择从emp ename成v_name empno=, empno;
新,4:选择ename从emp v_name empno=7788;
斯科特,,,,输出到屏幕的信息v_name
PL/SQL过程成功完成。
实例3:包含定义部分,执行部分和例外处理部分
为了避免pl/sql程序的运行错误,提高pl/sql的健壮性,应该对可能的错误进行处理
相关说明:甲骨文事先预定义了一些例外,no_data_found就是找不到数据的例外
如上述例子,如果输入烦人不是emp表中的empno号码,那么将会报,错报错该如何处理呢,这里就定义例外部分,交给他处理
完成declare
,2,v_name varchar2 (20);
,3,v_sal数量(7,2);
,4,开始
,5,选择ename, sal v_name, v_sal从emp empno=, empno;
,6,dbms_output。put_line (v_name | |的| | v_sal);
,7,异常,,,,,,定义例外关键字异常
,8,当no_data_found,,当查询不到数据时,采取措施打印错误