Oracle 的 PLSQL 存储过程,适合需要写复杂逻辑的你。用PROCEDURE
来写通用的逻辑,用FUNCTION
来返回值。多个过程打包就用PACKAGE
,结构清晰、管理方便。嗯,这些东西你用熟了,业务代码干净不少。
存储过程里的declare
、begin
、end
这些语法,看着老派,其实还挺好用。变量声明、控制流程都能搞定。要注意一些细节:SELECT
后面没INTO
会报错,别名不能和字段名撞名,不然运行直接挂。
你要是用Hibernate
来调 Oracle 过程,也没问题。通过CallableStatement
调用就行,无返回值、有返回值、甚至返回列表的,都有套路。返回列表的可以用ResultSet
或者 Oracle 的自定义类型接住。
Java 那边也是类似套路。JDBC 能搞定大部分调用需求,registerOutParameter
负责拿结果。返回多行?用游标或者自定义类型。如果是动态 SQL,用EXECUTE IMMEDIATE
配上绑定变量,性能也不错。
你要真动手写,建议提前想好异常,像no data found
这种,预防一下准没错。还有,记得别用AS
给表起别名,Oracle 不认,会报错。
对了,下面这几个链接也蛮实用的,想深入挖的可以看看:
如果你是搞数据逻辑、业务封装的,PLSQL 是真的能省不少事,写起来熟练了还挺带感。