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();

标签:存储,中带,调用,user,SQL,oracle,query,过程

来源: https://www.cnblogs.com/zl520/p/11161940.html

oracle 存储过程带入参,oracle中带参存储过程的使用相关推荐

  1. C语言中的带参宏和带参函数的区别

    C语言中的带参宏和带参函数的区别 (1) 带参函数中的形参是变量,因此有类型检查.而带参宏只是简单的字符串替换. (2) 从程序执行的过程来看,带参宏是在预处理阶段被预处理器处理的.而带参函数是在程序 ...

  2. 05c语言——宏定义、带参宏、带参宏函数

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.宏定义 1.使用规则 2.注意 二.带参宏 1.定义 2.注意 三.带参函数 1.带参函数的宏与带参宏的区别 2.带参宏 ...

  3. java无参_Java中无参无返回和无参带返回的类型方法

    在前面的文章中,我们学习了java中方法的定义.分类及调用的相关知识.知道了java中的方法其实可以叫做函数,目的是实现某些我们想要的功能,也知道了java中方法的分类共有四种:无参无返回.无参带返回 ...

  4. 带参宏和带参函数的比较(C语言)

    例:分别通过宏定义和函数方式求a和b的乘积 #include<stdio.h> #define mult_macro(a,b) a*b int mult_fun(int a, int b) ...

  5. java异步调用数据库存储过程详解,java中如何调用存储过程

    create procedure getsum @n int =0 as declare @sum int declare @i int set @sum=0 set @i=0 while @i 在线 ...

  6. Java中带参方法的定义与调用

    方法的参数包括:带一个参数以及带多个参数的情况: 方法的带参数定义格式如下: 方法名(数据类型 变量名, 数据类型 变量名, 数据类型 变量名){// 方法体 } 本代码实现的功能主要是判断:输入的数 ...

  7. java调用有参方法_java 带参方法调用

    publicclassCustomer{StringbianHao;intjiFen;}===============importjava.util.*;importjava.util.Scanner ...

  8. java反射调用某个类的方法(带参或不带参)

    Class类: public getDeclaredMethod( name,                                  <?>... parameterTypes ...

  9. mysql存储过程if多命令_MySQL存储过程if-存储过程中的if-db2存储过程if多条件

    存储过程的if,else怎幺写? Oracle 是下面这种写法: IF testvalue > 100 THEN dbms_output.put_line( '100+' ); ELSIF te ...

最新文章

  1. php 上下位置居中,CSS_css中position:fixed实现div在窗口上下左右居中,上下左右 居中 代码如下 复制 - phpStudy...
  2. android开发获取应用本身耗电量_别找了,Android常用自动化工具全在这儿了!
  3. matlab 绘制三维图并标注每个点的坐标
  4. javaweb学习总结(二十一):JavaWeb的两种开发模式
  5. LCD1602,4位数据总线液晶屏时钟,STC12C5A60S2的10位ADC功能程序
  6. 程序员修神之路--缓存架构不够好,系统容易瘫痪
  7. android 编译共享ccache的缓存
  8. JS解析格式化Json插件,Json和XML互相转换插件
  9. 转换和编辑的sony的MTS硬盘摄像机格式文件。
  10. java输出不同颜色_Java设计模式-策略模式、状态模式
  11. kaggle房价预测特征意思_机器学习-kaggle泰坦尼克生存预测(一)-数据清洗与特征构建...
  12. Hadoop 生态学习
  13. 并行导致的进程数过大无法连接数据库
  14. PowerBuilder9.0 安装包及注意事项
  15. 跨境人才经验分享:跨境电商职位面试经验技巧
  16. RSA2分段加密解密
  17. elasticsearch + ik
  18. iPhone4 SIM失败?无效SIM?有效解决
  19. 有服务器端源码和客户端源码,C# 远程控制软件源码(含服务器端和客户端源码)...
  20. C#:Krypton控件使用方法详解(第一讲) —— kryptonButton

热门文章

  1. 崔莺莺到宋楚瑜,张你怎么看待?
  2. 100部好看的校园喜剧片(可练习英文)+美国校园青春励志电影+25部口语练习电影+20部最浪漫电影
  3. 千里马-modulo
  4. 液晶面板里面有些什么配件_液晶模组LCM和液晶面板有什么区别
  5. Kafka的监控指标
  6. 解析LDO的基本原理与主要参数
  7. 吃遍深圳,FB到底 [zt]
  8. Rabbitmq用户角色
  9. SpringBoot中405异常
  10. 第068封“情书”:耶路撒冷Assembling a 3DScanOfTheEarth可视化地图数据