先截个屏展示一下plsql developer的工程的大概界面吧
目前接触的(项目经理老是挂在嘴边的:存储过程,触发器,别的似乎也有,但是这两个词出现的频率不是一般的高 )
一。存储过程(这里我把存储函数也放在这儿,因为太重要了!)
存储过程的语法书写:
create or replace procedure 存储过程名
在这里说一下存储过程的带参数存储(in,out,in out)
存储函数的语法书写:
create or replace function 函数名
1.in 传参(简单理解:输入)
create or replace procedure p_name( param_name in param_type) is
--声明了一个调用时传进来的参数 和 它的类型
验证:
create or replace procedure p_name( param_name in number) is
begin
dbms_output.put_line(param_name);--打印param_name
param_name:=33;
end p_name;
调用此过程
declare
aaa number:=30;
begin
p_name(aaa);
dbms_output.put_line(aaa);--打印aaa
end;
结果:打印2次30
2.out 传参(简单理解:输出)
create or replace procedure p_name(param_name out param_type) is
--声明了一个调用后返回的参数和它的类型
验证:
create or replace procedure p_name( param_name out number) is
begin
dbms_output.put_line(param_name);--打印param_name
param_name:=33;
end p_name;
调用此过程
declare
aaa number:=30;
begin
p_name(aaa);
dbms_output.put_line(aaa);--打印aaa
end;
结果:打印一次null ---因为aaa 根本传不进去 只是接收返回值而已
打印一次33 ----过程将33返回并赋值给aaa
3.in out 传参(简单理解:输入输出时)
create or replace procedure p_name(param_name in out param_type) is
--声明了一个调用时传进来调用后返回的参数及类型
验证:
create or replace procedure p_name( param_name in out number) is
begin
dbms_output.put_line(param_name);--打印param_name
param_name:=33;
end p_name;
调用此过程
declare
aaa number:=30;
begin
p_name(aaa);
dbms_output.put_line(aaa);--打印aaa
end;
结果:打印一次30 ---30 通过 in 传了进去
打印一次33 -----33通过out 返回并赋值给aaa
注:参数类型也可以这样定义 表明.列明%type --参数类型为表中的那个列的参数类型 声明参数时也可以给他赋值 如 param_name in varchar2(10):='aaa'
这个概念性的东西自己百度,我理解的存储过程是sql代码块组成的,它的出现解决了现在的项目中复杂的业务逻辑难以处理的问题,
至于特点吗, 有很多,先说缺点吧,我们大量使用的话,会给数据库带来巨大的压力
调用方便,已经编译过了,节省时间,也就是执行效率高,更重要的是安全性高,可维护性高
二。包以及包体(类似java中的类)
语法书写
create or replace package 包名
在oracle数据库中,package包如同java中package中的作用大致类似。
在oracle中,包里面可以写存储过程,写方法,写sql语句,定义一个结构体等等。
包有包头和包体,包头和包体的名称要相同
三。触发器
语法书写
create or replace triggers 触发器名