首页 / ORACLE / oracle中带参存储过程的使用
oracle中带参存储过程的使用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了oracle中带参存储过程的使用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2762字,纯文字阅读大概需要4分钟。
内容图文
![oracle中带参存储过程的使用](/upload/InfoBanner/zyjiaocheng/902/20cf819257f8476da8dd4b057ea17b00.jpg)
Oracle中存储过程带参分为:输入参数(in)和输出参数(out)
例如:
1 create or replace procedure out_test(v_user in emp.user_name%type, 2 v_salary out emp.salary%type, 3 v_deptno out emp.emp_deptno%type) as 4 begin 5 select salary, emp_deptno 6 into v_salary, v_deptno 7 from emp 8 where user_name = v_user; 9 exception 10 when NO_DATA_FOUND then 11 dbms_output.put_line('No data found'); 12 when TOO_MANY_ROWS then 13 dbms_output.put_line('Too many rows found'); 14 end 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();
内容总结
以上是互联网集市为您收集整理的oracle中带参存储过程的使用全部内容,希望文章能够帮你解决oracle中带参存储过程的使用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。