oracle存储过程demo1---无返回值的存储过程:

/*
写一个过程,可以向book表添加书
*/ create table book(
id number(4),
book_name varchar2(30),
publishing varchar2(30)
) create or replace procedure add_book
(
id in number,
name in varchar2,
publishing in varchar2
)is
begin
insert into book values(id,name,publishing);
commit;
end; package com.etc.test;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
public class CunChuDemo1 {
public static void main(String[] args) {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");//加载驱动
Connection ct = DriverManager.getConnection(
"jdbc:oracle:thin:@127.0.0.1:1521:orcl", "scott", "orcl");//获取链接
CallableStatement cs = ct.prepareCall("call add_book(?,?,?)");//创建CallableStatement
//给?赋值
cs.setInt(1, 1);
cs.setString(2, "java");
cs.setString(3, "java出版社");
//执行
cs.execute();
//关闭
cs.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
==============================================================
oracle存储过程demo2---有返回值的存储过程(非列表): /*
编写一个存储过程,可以输入雇员的编号,返回该雇员的姓名。
*/ create or replace procedure sp_proc
(
spno in number,
spname out varchar2
)is
begin
select ename into spname from emp where empno=spno;
end; package com.etc.test;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
public class CunChuDemo1 {
public static void main(String[] args) {
try {
Class.forName("oracle.jdbc.driver.OracleDriver"); // 1.加载驱动
Connection ct = DriverManager.getConnection(
"jdbc:oracle:thin:@127.0.0.1:1521:orcl", "scott", "orcl");// 2.得到连接
CallableStatement cs = ct.prepareCall("call sp_proc(?,?)");// 3.创建CallableStatement
cs.setInt(1, 7788); //给第一个?赋值
cs.registerOutParameter(2, oracle.jdbc.OracleTypes.VARCHAR);//给第二个?赋值
cs.execute();//4、执行
//取出返回值,要注意?的顺序
String name = cs.getString(2);
System.out.println("编号7788的名字:" + name);
cs.close();//5、关闭
} catch (Exception e) {
e.printStackTrace();
}
}
}
----------------------------------------------------------------
扩张:编写一个过程,可以输入雇员的编号,返回该雇员的姓名、工资和岗位。 create or replace procedure sp_proc
(
spno in number,
spname out varchar2,
spsal out number,
spjob out varchar2
)is
begin
select ename,sal,job into spname,spsal,spjob from emp where empno=spno;
end; package com.etc.test;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
public class CunChuDemo1 {
public static void main(String[] args) {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");// 1.加载驱动
Connection ct = DriverManager.getConnection(
"jdbc:oracle:thin:@127.0.0.1:1521:orcl", "scott", "orcl");// 2.得到连接
CallableStatement cs = ct.prepareCall("call sp_proc(?,?,?,?)"); // 3.创建CallableStatement
cs.setInt(1, 7788); //给第一个?赋值
cs.registerOutParameter(2, oracle.jdbc.OracleTypes.VARCHAR); //给第2个?赋值
cs.registerOutParameter(3, oracle.jdbc.OracleTypes.DOUBLE); //给第3个?赋值
cs.registerOutParameter(4, oracle.jdbc.OracleTypes.VARCHAR); //给第4个?赋值
cs.execute(); //4、执行
//取出返回值,要注意?的顺序
String name = cs.getString(2);
double sal = cs.getDouble(3);
String job = cs.getString(4);
System.out.println("编号7788的名字:" + name + ",职位" + job + ",薪水" + sal + "");
cs.close(); //5、关闭
} catch (Exception e) {
e.printStackTrace();
}
}
}
====================================================================
oracle存储过程demo3---有返回值的存储过程(列表[结果集]): /*
编写一个存储过程,输入部门号,返回该部门所有雇员信息。
*/
分析如下:由于oracle存储过程没有返回值,它的所有返回值都是通过out参数来替代的,列表同样也不例外,
但由于是集合,所以不能用一般的参数,必须要用pagkage了。所以要分两部分:
1)、建立一个包,在该包中我们定义类型test_cursor,它是个游标。 create or replace package testpackage
as
type test_cursor is ref cursor;
end testpackage; 2)、建立存储过程。
create or replace procedure sp_proc
(
spno in number,
p_cursor out testpackage.test_cursor
)is
begin
open p_cursor for
select * from emp where deptno=spno;
end sp_proc; package com.etc.test;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
public class CunChuDemo1 {
public static void main(String[] args) {
try {
Class.forName("oracle.jdbc.driver.OracleDriver"); // 1.加载驱动
// 2.得到连接
Connection ct = DriverManager.getConnection(
"jdbc:oracle:thin:@127.0.0.1:1521:orcl", "scott", "orcl");
CallableStatement cs = ct.prepareCall("call sp_proc(?,?)"); // 3.创建CallableStatement
cs.setInt(1, 10); //给第1个?赋值
cs.registerOutParameter(2, oracle.jdbc.OracleTypes.CURSOR); //给第二个?赋值
cs.execute(); //4、执行
//得到结果集
ResultSet rs = (ResultSet) cs.getObject(2);
while (rs.next()) {
System.out.println(rs.getInt(1) + " " + rs.getString(2) + " " + rs.getString(3) + " " + rs.getInt(4)
+ " " + rs.getDate(5)+ " " + rs.getInt(6)+ " " + rs.getInt(7)+ " " + rs.getInt(8));
}
//5、关闭
rs.close();
cs.close();
ct.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
===========================================================================

  

oracle--存储过程2--bk的更多相关文章

  1. oracle 存储过程

    来自:http://www.jb51.net/article/31805.htm Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 I ...

  2. Oracle存储过程语法

    原文链接:http://www.jb51.net/article/31805.htm Oracle存储过程基本语法 存储过程  1 CREATE OR REPLACE PROCEDURE 存储过程名  ...

  3. ORACLE存储过程调用Web Service

    1. 概述 最近在ESB项目中,客户在各个系统之间的服务调用大多都是在oracle存储过程中进行的,本文就oracle存储过程调用web service来进行说明.其他主流数据库,比如mysql和sq ...

  4. Oracle存储过程基本语法介绍

    Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR RE ...

  5. MyBatis调用Oracle存储过程

    MyBatis调用Oracle存储过程 1.无输入和输出参数的存储过程 2.带有输入和输出参数的存储过程 3.返回游标的存储过程 mybatis中的配置文件代码 <resultMap type= ...

  6. Oracle存储过程(转)

    Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR RE ...

  7. Oracle存储过程中异常Exception的捕捉和处理

    Oracle存储过程中异常的捕捉和处理 CREATE OR REPLACE Procedure Proc_error_process ( v_IN in Varchar2, v_OUT Out Var ...

  8. Oracle存储过程动态创建临时表/存储过程执行权限问题--AUTHID CURRENT_USER

    关于Oracle存储过程执行权限问题的解决 http://blog.sina.com.cn/s/blog_6ceed3280101hvlo.html (2014-04-02 04:06:28) 转载▼ ...

  9. ORACLE存储过程学习

    存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR REPLACE PROCEDURE ...

  10. C# 获取 oracle 存储过程的 返回值1

    /// <summary> /// 返回对应表的模拟自增字段值 /// </summary> /// <param name="tablename"& ...

随机推荐

  1. Js 抱错:::SyntaxError: identifier starts immediately after numeric literal

    SyntaxError: identifier starts immediately after numeric literal 今天写了个onclick()方法,有这样的一个变量4028b88161 ...

  2. centos 安装 jdk PostgreSQL

    1.下载: anzhuang  jDK http://blog.csdn.net/youzhouliu/article/details/51183115 ----------------------- ...

  3. dva+antd写的一个react例子

    github地址 https://github.com/shenggen1987/dva-cli-demo 效果图片

  4. python多版本管理

    1.查看系统中的安装了那些python版本 2.查看系统中的alternatives命令是否安装 3.使用alternatives --install 接管python -install 选项使用了多 ...

  5. 编写你的第一个django应用程序4

    本教程上接教程3,我们将继续开发网页投票应用,本部分将主要关注简单的表单处理以及如何对代码进行优化 写一个简单的表单 让我们更新一下在上一个教程中编写的投票详细页面的模板(‘polls/detail. ...

  6. Spring声明式事务管理与配置介绍

    转至:http://java.9sssd.com/javafw/art/1215 [摘要]本文介绍Spring声明式事务管理与配置,包括Spring声明式事务配置的五种方式.事务的传播属性(Propa ...

  7. OpenStack Neutron 之 Load Balance

    OpenStack Neutron 之 Load Balance 负载均衡(Load Balance)是 OpenStack Neutron 支持的功能之一.负载均衡能够将网络请求分发到多个实际处理请 ...

  8. Fidder工具抓包及篡改数据

    下载fiddler的最新版本: 运行fiddler之后测试要调试的页面是否可以捕获,刷新页面后左边列表会实时显示目前http请求的条目.如图红色部分 测试成功,开始断点捕获数据 点击菜单栏按钮[Rul ...

  9. Spring Cloud之Hystrix雪崩效应解决方案

    基于Hystris解决雪崩效应: 1.服务降级:    防止用户一直等待,使用降级方式,调用FallBack(返回友好提示,不会去处理请求) 案例: 当前请求人数过多,请稍后重试 2.服务熔断:(和服 ...

  10. linux 压缩和归档

    在linux下有几种压缩方式:gzip.bzip2.xz.zip gzip 压缩文件以.gz结尾, 只能压缩文件,不能压缩目录 用法: gzip:/path/to/somefile   用来压缩,完成 ...