oracle中带参存储过程的使用
Oracle中存储过程带参分为:输入参数(in)和输出参数(out)
例如:
create or replace procedure out_test(v_user in emp.user_name%type,
v_salary out emp.salary%type,
v_deptno out emp.emp_deptno%type) as
begin
select salary, emp_deptno
into v_salary, v_deptno
from emp
where user_name = v_user;
exception
when NO_DATA_FOUND then
dbms_output.put_line('No data found');
when TOO_MANY_ROWS then
dbms_output.put_line('Too many rows found');
end out_test;
在命令行中调用该存储过程,利用绑定变量
SQL> var v_user varchar2(20);
SQL> var v_salary number;
SQL> var v_deptno number;
SQL> exec :v_user := 'Lisi'; PL/SQL procedure successfully completed
v_user
---------
Lisi SQL> exec out_test(:v_user, :v_salary, :v_deptno); PL/SQL procedure successfully completed
v_user
---------
Lisi
v_salary
---------
v_deptno
---------
在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之带参存储过程(存储过程中for循环调用存储过程)
--带参存储过程create or replace procedure testdate(v in number) is i number; begin i:=v; insert into test_ ...
- oracle中函数和存储过程的区别和联系【转载竹沥半夏】
oracle中函数和存储过程的区别和联系[转载竹沥半夏] 在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,但也有自己的特点.刚学完函数和存储过程,下面来和大家分享一下自己 ...
- oracle中函数和存储过程的区别和联系
oracle中函数和存储过程的区别和联系 在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,但也有自己的特点.刚学完函数和存储过程,下面来和大家分享一下自己总结的关于函数和 ...
- Oracle中如何导出存储过程、函数、包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句?
Oracle中如何导出存储过程.函数.包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句? QQ群里有人问:如何导出一个用户下的存储过程? 麦苗答:方法有多种,可以使用DBMS_MET ...
- Oracle中如何写存储过程
>存储过程是什么? 存储过程是一种命名的PL/SQL程序块,输入.输出参数数量[0个或多个],通常没有返回值[也有特殊的情况]. 运行SQL语句时,Oracle是要先编译再执行的:而存储过程是已 ...
- 慕课网-Java入门第一季-7-5 Java 中带参无返回值方法的使用
public class HelloWorld { public static void main(String[] args) { // 创建对象,对象名为hello HelloWorld hell ...
- Java 中带参带返回值方法的使用
如果方法既包含参数,又带有返回值,我们称为带参带返回值的方法. 例如:下面的代码,定义了一个 show 方法,带有一个参数 name ,方法执行后返回一个 String 类型的结果 调用带参带返回值的 ...
- Java 中带参无返回值方法的使用
有时方法的执行需要依赖于某些条件,换句话说,要想通过方法完成特定的功能,需要为其提供额外的信息才行.例如,现实生活中电饭锅可以实现“煮饭”的功能,但前提是我们必须提供食材,如果我们什么都不提供,那就真 ...
- C#:Oracle数据库带参PLSQL语句的正确性验证
在有Oracle数据库C#项目中,有一个这样的需求:在界面上配置了带参数的PLSQL语句,但是要通过程序验证其正确性,那么该如何实现?这就是本文要探讨的内容. 一:通过OracleCommand对象的 ...
随机推荐
- python 虚拟环境的安装
方式一 1. pip install virtualenv 2. virtualenv 虚拟环境的名字 3. mac上 source + 虚拟环境的目录/bin/activate win上 直接进入虚 ...
- Maccms后门分析复现(并非官网的Maccms){10.15 第二十二天}
该复现参考网络中的文章,该漏洞复现仅仅是为了学习交流,严禁非法使用!!!! Maccms官网:http://www.maccms.cn/ Maccms网站基于PHP+MYSQL的系统,易用性.功能良好 ...
- HTML元素 和 CSS (9.23 第十天)
HTML元素分类:块级元素和内联元素块级元素:标签元素会以新行开始或结束<h1><p><table>等内联元素:显示数据不会以新行开始<a><im ...
- c++ opencv 动态内存
1.CvMemStorage定义动态内存存储器 内存存储器是一个用来存储诸如序列.轮廓.图形和子划分等动态增长数据结构的底层结构 2.示例 CvMemStorage *mems = cvCreat ...
- EUI库 - 皮肤
皮肤分离机制 皮肤分离机制对制作可复用的外观比较有优势 那对于只使用一次的皮肤呢?如果也拆分出两个文件,显然不太方便.这里我们针对单次使用的皮肤定制了内部类的功能 每个组件都有一个chi ...
- Arduino -- functions
For controlling the Arduino board and performing computations. Digital I/O digitalRead() digitalWrit ...
- java课程之团队开发冲刺阶段2.2
一.总结昨天进度 1.单独实现静音功能,还没有进行整体整合 二.遇到的问题 1.一开始设计静音的思路有问题,所以在实现上有些许麻烦,一开始的想法是将这些音量直接设置为0就可以实现静音,但是在恢复响铃模 ...
- Java连载69-接受输入、用数组模拟栈
一.编写一个酒店管理系统 1.直接上代码 package com.bjpowernode.java_learning; public class D69_1_ { //编写一个程序模拟酒店的管理系 ...
- 获取网站IP地址(Linux,C)
#include <netdb.h> #include <stdio.h> #include <unistd.h> #include <stdlib.h> ...
- 2018CCPC吉林赛区 hdu6555~hdu6566
2018CCPC吉林赛区(重现赛)- 感谢北华大学 A 基础数论. #include<bits/stdc++.h> using namespace std; typedef long lo ...