存储过程
存储程序(英语:Stored Procedure),是在数据库存储复杂程序,以便外部程序调用的数据库对象,可以视为数据库的一种函数或子程序。
优点
- 存储过程可封装,隐藏复杂的商业逻辑。
- 存储过程可以回传值,并可以接受参数。
- 业务代码只需要赋予SELECT和EXECUTE权限就可以执行存储过程,可用来做权限控制,防止业务代码修改数据库逻辑。
缺点
- 存储过程,往往定制于特定的数据库上。因支持的编程语言不同,当切换到其他数据库系统时,需要重写原有的存储过程。
- 存储过程的性能调校与撰写,受限于各种数据库系统。
- 存储过程无法跨库、跨机器执行
在阿里《Java开发手册》中,禁止使用存储过程,因为存储过程难以调试和拓展,更没有移植性。
存储过程的使用
存储过程可以设定传入参数和返回参数。
在存储过程中不能直接使用DDL语句,如要使用,在Oracle中需用execute immediate 'ddl语句'
包裹的方式来执行动态SQL。需要注意的是,如用该方式建立一张临时表,然后在存储过程的后续部分调用该表,会报错“该表不存在”。