存储过程(Stored Procedure
)是一组为了完成特定功能的 SQL 语句集,经编译后存储在数据库中。用户
通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
优点:
允许模块化程序设计
,就是说只需要创建一次过程,以后在程序中就可以调用该过程任意次。允许更快执行
,如果某操作需要执行大量 SQL 语句或重复执行,存储过程比 SQL 语句执行的要快。减少网络流量
,例如一个需要数百行的 SQL 代码的操作有一条执行语句完成,不需要在网络中发送数百行代码。好的安全机制
,对于没有权限执行存储过程的用户,也可授权他们执行存储过程。存储过程创建语法:
create or replace procedure 存储过程名(param1 in type,param2 out type)as变量 1 类型(值范围);变量 2 类型(值范围);Begin Select count(*) into 变量 1 from 表 A where 列名=param1; If (判断条件) then Select 列名 into 变量 2 from 表 A where 列名=param1; Dbms_output Put_line(‘打印信息’); Elsif (判断条件) then Dbms_output Put_line(‘打印信息’); Else Raise 异常名(NO_DATA_FOUND); End if;Exception When others then Rollback;End;
注意事项:
count(*)
函数判断是否存在该条操作记录select …into…
给变量赋值raise+异常名
Oracle 中使用 rownum
来进行分页,这个是效率最好的分页方法,hibernate 也是使用 rownum 来进行 Oralce分页的
select * from (select rownum r,a from tableName where rownum <= 20)where r>10
1、可以理解函数是存储过程的一种
2、函数可以没有参数,但是一定需要一个返回值;存储过程可以没有参数,不需要返回值
3、函数return返回值没有返回参数模式,存储过程通过out参数返回值,如果需要返回多个参数则建议使用存储过程
4、在sql数据操纵语句中只能调用函数而不能调用存储过程
使用 ||
符号连接字符串, 如 ‘abc’ || ‘d’ 的结果是 abcd。
特点:
参数
,而函数只能返回值
或者表对象
。独立的部分
来执行,而函数可以作为查询语句的一个部分
来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于 FROM 关键字的后面。区别:
我们可以将比较复杂的查询写成函数,然后到存储过程中去调用这些函数
Oracle 中的游标分为显示游标
和隐式游标
显示游标:
显示游标是用 cursor...is
命令定义的游标,它可以对查询语句(select)返回的多条记录进行处理;
显式游标的操作:打开游标、操作游标、关闭游标;
隐式游标:
隐式游标是在执行插入 (insert)
、删除(delete)
、修改(update)
和返回单条记录的查询(select)
语句时由 PL/SQL 自动定义的。
PL/SQL 隐式地打开 SQL 游标,并在它内部处理 SQL语句,然后关闭它。