oracle 应用程序调用存储函数
package com.founder.ec.common.lucene;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import oracle.jdbc.internal.OracleCallableStatement;
import oracle.jdbc.internal.OracleTypes;
public class ReadMysql {
public static Connection getConnection() throws Exception {
String url = "jdbc:oracle:thin:@192.168.";
Class.forName("oracle.jdbc.driver.OracleDriver");
String userName = "";
String password = "";
Connection con = DriverManager.getConnection(url, userName, password);
return con;
}
/**
* CREATE PROCEDURE member_procedure_out(memberId in NUMBER,realname OUT VARCHAR2,mobile_phone OUT VARCHAR2)
*/
//释放数据库资源
public static void release(Connection con, CallableStatement call, ResultSet res) {
if (res != null || call != null || con != null) {
try {
res.close();
con.close();
call.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
res = null;
call = null;
res = null;
}
}
}
public static void main(String[] args) {
/**
*
CREATE PACKAGE mypackage AS
TYPE empcursor is REF CURSOR ;
PROCEDURE queryEmpList(memberId in NUMBER,empList OUT empcursor);
END mypackage;
*/
try {
//调用存储过程,根据会员id获得会员name
// testpro();
//调用存储函数,根据会员id计算其年收入
//testfunction();
//调用包下的存储过程,游标
testCursor();
} catch (Exception e) {
e.printStackTrace();
} finally {
// release(con, call, null);
}
}
private static void testCursor() {
Connection con = null;
CallableStatement call = null;
try {
String sql = "{call mypackage.queryEmpList(?,?)}";
con = getConnection();
call = con.prepareCall(sql);
call.setInt(1,7923);
call.registerOutParameter(2,OracleTypes.CURSOR);//光标
call.execute();
//取出该会员的所有信息
ResultSet res = ((OracleCallableStatement) call).getCursor(2);
while (res.next()){
String name=res.getString("real_name");
int memberId=res.getInt("member_id");
System.out.print(name+memberId);
}
} catch (Exception e) {
e.getMessage();
}
}
private static void testfunction() {
Connection con = null;
CallableStatement call = null;
try {
String sql = "{?=call query_member(?)}";
con = getConnection();
call = con.prepareCall(sql);
call.registerOutParameter(1,OracleTypes.NUMBER);
call.setInt(2,7923);
call.execute();
double sum=call.getDouble(1);
System.out.println(sum);
} catch (Exception e) {
e.getMessage();
}
}
private static void testpro() {
Connection con = null;
CallableStatement call = null;
try {
String sql = "{call member_procedure_out(?,?)}";
con = getConnection();
call = con.prepareCall(sql);
call.setInt(1, 7923);
call.registerOutParameter(2, OracleTypes.VARCHAR);
} catch (Exception e) {
e.getMessage();
}
try {
call.execute();
String realName = call.getString(2);
System.out.println(realName);
} catch (Exception e) {
e.printStackTrace();
}
}
}
create PROCEDURE raise_order_price_procedure(orderId in NUMBER )
as
psal ORDER_INFO.paid_fee%TYPE ;
BEGIN
select paid_fee into psal from ORDER_INFO where ORDER_ID=orderId;
where ORDER_ID=orderId;
dbms_output.put_line());
END;
drop PROCEDURE member_procedure_out;
CREATE PROCEDURE member_procedure_out(memberId in NUMBER,realname OUT VARCHAR2)
AS
BEGIN
select m.REAL_NAME into realname from member m where m.MEMBER_ID=memberId;
END;
/
--
BEGIN
raise_order_price_procedure();
END;
CREATE FUNCTION query_member(memberId in NUMBER)
RETURN NUMBER
AS
psal member.account_fee%type;
pcomm member.sum_points%type;
BEGIN
select account_fee , sum_points INTO psal,pcomm from MEMBER where MEMBER_ID=memberId;
);
END;
drop PACKAGE mypackage;
CREATE PACKAGE mypackage AS
TYPE empcursor is REF CURSOR ;
PROCEDURE queryEmpList(memberId in NUMBER,empList OUT empcursor);
END mypackage;
create or replace PACKAGE BODY mypackage AS
PROCEDURE queryEmpList(memberId in NUMBER,empList OUT empcursor)as
BEGIN
OPEN empList for select * from MEMBER where MEMBER_ID=memberId;
END queryEmpList;
END mypackage;
create package emp_pkg is
procedure emp_update_ename(v_empno varchar2,v_ename varchar2);
function emp_get_sal(v_empno varchar2) return number;
end;
oracle 应用程序调用存储函数的更多相关文章
- Spring JDBC调用存储函数
以下示例将演示spring jdbc如何调用存储函数.在这个示例中将通过调用存储函数来读取Student表中的一个可用记录信息.传递一个ID并获取学生的姓名. 语法: SimpleJdbcCall j ...
- oracle之存储过程和存储函数的使用和区别
#存储过程:封装在服务器上一段sql片段,已经编译好了的代码. 1.客户端调存储过程,执行效率就会非常高效. 语法: create [or replace] procedure 存储过程名称 (参数名 ...
- oracle 的自定义的存储函数遇到的 package or function is in an invalid state
转: oracle 的自定义的存储函数遇到的 package or function is in an invalid state 2017-10-28 11:08:17 major_tom 阅读数 ...
- oracle数据库中的存储函数
oracle中的存储函数,和系统内的函数类似,可以像调用系统函数一样调用存储函数.它与存储过程的唯一区别就是存储过程没有return返回值,存储函数可以与存储过程互换,存储函数可以在存储过程中调用. ...
- linux下c程序调用reboot函数实现直接重启【转】
转自:http://www.blog.chinaunix.net/uid-20564848-id-73878.html linux下c程序调用reboot函数实现直接重启 当然你也可以直接调用syst ...
- Oracle数据库---存储过程、存储函数
--创建存储过程CREATE OR REPLACE PROCEDURE first_procISBEGIN DBMS_OUTPUT.PUT_LINE('我是过程'); DBMS_OUTPUT.PUT_ ...
- 编程开发之--Oracle数据库--存储过程和存储函数(2)
上一小结我们简单介绍了存储过程和存储函数,对存储过程和存储函数有了一个基本的了解,接下来介绍在java程序中如何调用我们创建的存储过程和存储函数 1.在应用程序中调用我们的存储过程 创建一个简单的Ja ...
- 编程开发之--Oracle数据库--存储过程和存储函数(1)
1.存储过程和存储函数 描述:指存储在数据库中供所有用户程序调用的子程序叫做存储过程.存储函数 区别:存储函数可以通过return子句返回一个函数的值 (1)存储过程 语法:create [or re ...
- Oracle 学习笔记 18 -- 存储函数和存储过程(PL/SQL子程序)
PL/SQL子程序 它包含了函数和过程.此功能是指用户定义的函数.和系统功能是不同的.子程序通常完成特定的功能PL/SQL座.,能够被不同的应用程序多次调用.Oracle提供能够把PL/SQL程序存储 ...
随机推荐
- 【Audiophobia UVA - 10048 】【Floyd算法】
题目大意:从a城市到b城市的路径中,尽可能让一路上的最大噪音最小. 题目思路:设d [ i ][ j ]表示 i 到 j 的最大噪音的最小值. 那么d [ i ][ j ] = min( d[ i ] ...
- Codeforces_Round_547 (Div. 3)题解
题目链接 传送门 A题 题目 题意 给你两个正整数\(n\)和\(m\),然后你可以进行无数次操作(每次操作可以将\(n\)扩大两倍,或者扩大三倍),问你是否能够得到\(m\). 代码实现如下 n, ...
- P1525 关押罪犯[扩展域并查集]
题目来源:洛谷 题目描述 S城现有两座监狱,一共关押着N名罪犯,编号分别为1−N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用“怨气值”(一个正整 ...
- fastjson将json格式字符串转成list集合
1.gameListStr = "[{"gameId":"1","gameName":"哈哈"},{" ...
- Proxmox初步了解
Proxmox不分主从,所有节点同步信息 创建集群 pvecm(可通过web界面创建.添加至集群) pvecm create cluster01 pvecm status 添加节点 pvecm add ...
- 微信程序开发之-WeixinJSBridge调用
微信的WeixinJSBridge还是很厉害的,虽然官方文档只公布了3个功能,但是还内置的很多功能没公布,但是存在.今天就好好和大家聊聊 功能1------发送给好友 代码如下: functi ...
- Fiddler——手机端无法安装证书
前言 一个APP测试,需要抓包,设置好代理后,访问代理地址,下载证书,下载完成却不能安装. 提示:无法读取该证书文件 手机型号: OPPO A5 步骤 设置->其他设置->设备与隐私-&g ...
- 【Selenium-WebDriver实战篇】java测试使用HttpClient debug日志关闭
在上一篇设置完Tess4J之后,引用jar包之前,我的日志体系一直是只出现info级别的,但是引用之后出现很多httpClient的请求. 于是网上调查了下,可以通过代码实现,就在入口程序增加该部分代 ...
- SpringBoot-设置定时任务
@Scheduled为设置定时任务的注解. 参数常用的为两种: 第一种是fixedRate,表示以一种固定频率去执行,单位为毫秒:例如@Scheduled(fixedRate = 5000) 表示为 ...
- Greenplum常用的gp_toolkit & pg_catalog监控语句
gp_toolkit 说明 Greenplum数据库提供了一个名为gp_tooikit的管理schema,该schema下有关于查询系统目录,日志文件, 用户创建(databases,schema,t ...