oracle中带参存储过程的使用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

oracle中带参存储过程的使⽤
Oracle中存储过程带参分为:输⼊参数(in)和输出参数(out)
例如:
1create or replace procedure out_test(v_user in er_name%type,
2 v_salary out emp.salary%type,
3 v_deptno out emp.emp_deptno%type) as
4begin
5select salary, emp_deptno
6into v_salary, v_deptno
7from emp
8where user_name= v_user;
9 exception
10when NO_DATA_FOUND then
11 dbms_output.put_line('No data found');
12when TOO_MANY_ROWS then
13 dbms_output.put_line('Too many rows found');
14end out_test;
在命令⾏中调⽤该存储过程,利⽤绑定变量
1 SQL>var v_user varchar2(20);
2 SQL>var v_salary number;
3 SQL>var v_deptno number;
4 SQL>exec :v_user :='Lisi';
5
6 PL/SQL procedure successfully completed
7 v_user
8---------
9 Lisi
10
11 SQL>exec out_test(:v_user, :v_salary, :v_deptno);
12
13 PL/SQL procedure successfully completed
14 v_user
15---------
16 Lisi
17 v_salary
18---------
19 v_deptno
20---------
在plsql developer中执⾏带的存储过程,⽆参可以直接执⾏,带in类型的参数要输⼊变量值,带out类型的不⽤输⼊,会在plsql下⾯输出结果在hibernate的 EJB()调⽤存储过程中执⾏存储过程
EJB调⽤存储过程
要调⽤存储过程,我们可以通过EntityManager 对象的createNativeQuery()⽅法执⾏SQL 语句(注意:这⾥说的是SQL 语句,不是
EJB3 QL), 调⽤存储过程的SQL 格式如下:
{call 存储过程名称(参数1, 参数2, … )}
在EJB3 中你可以调⽤的存储过程有两种
1.⽆返回值的存储过程。

2.返回值为ResultSet(以select 形式返回的值)的存储过程,EJB3 不能调⽤以OUT 参数返回值的存储过程
1.调⽤⽆返回值的存储过程
//调⽤⽆返回参数的存储过程
Query query = em.createNativeQuery("{call Procedure()}");
query.executeUpdate();
2.调⽤返回单值的存储过程
//调⽤返回单个值的存储过程
Query query = em.createNativeQuery("{call GetPersonName(?)}");
query.setParameter(1, new Integer(1));
String result = query.getSingleResult().toString();
3.调⽤返回表全部列的存储过程
在调⽤存储过程时,可以让EJB3 Persistence 运⾏环境将列值直接填充⼊⼀个Entity 的实例(本例填充进Person 对象),并将实例作为结果返回
//调⽤返回Person 全部列的存储过程
Query query = em.createNativeQuery("{call GetPersonList()}", Person.class);
List result = query.getResultList();
存储过程GetPersonList:
CREATE PROCEDURE `GetPersonList`()
NOT DETERMINISTIC
SQL SECURITY DEFINER
COMMENT ''
BEGIN
select * from person;
END;
4.调⽤返回部分列的存储过程
创建存储过程:
CREATE PROCEDURE `GetPersonPartProperties`()
NOT DETERMINISTICSQL SECURITY DEFINER
COMMENT ''
BEGIN
SELECT personid, personname from person;
END;
//调⽤返回部分列的存储过程
Query query = em.createNativeQuery("{call GetPersonPartProperties()}");
List result = query.getResultList();。

相关文档
最新文档