1、创建添加存储过程

CREATEORREPLACEPROCEDURE stu_proc(v_id INNUMBER, v_name INVARCHAR2, v_age INNUMBER) AS
BEGIN
INSERTINTO student(id, sname, age) values (v_id, v_name, v_age);
commit;
END;

JAVA调用添加存储过程


package com.ljq.test;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException; publicclass ProceTest { public static void main(String[] args) throws Exception {
Connection conn =null;
CallableStatement statement =null;
String sql ="{call stu_proc(?, ?, ?)}";
try {
conn = ConnUtils.getConnection();
statement = conn.prepareCall(sql);
statement.setInt(, );
statement.setString(, "laoli");
statement.setInt(, );
//如果第一个结果是ResultSet对象,则返回true;如果第一个结果是更新、添加、修改或者没有结果,则返回 false
boolean issuccess=statement.execute();
//成功返回true,失败返回false
System.out.println(issuccess);
} catch (SQLException e) {
e.printStackTrace();
} finally {
ConnUtils.free(null, statement, conn);
}
} }

创建删除存储过程语句


CREATEORREPLACEPROCEDURE stu_proc(v_id INNUMBER, v_msg OUT VARCHAR2) IS
v_flag NUMBER:=1;
BEGIN
SELECT o.id INTO v_flag FROM student o WHERE o.id=v_id;
DELETEFROM student o WHERE o.id=v_flag;
commit;
v_msg:='删除成功';
EXCEPTION
WHEN OTHERS THEN v_msg:='删除失败';
END;

java调用删除存储过程


package com.ljq.test;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Types; publicclass ProceTest { public static void main(String[] args) throws Exception {
Connection conn =null;
CallableStatement statement =null;
String sql ="{call stu_proc(?, ?)}";
try {
conn = ConnUtils.getConnection();
statement = conn.prepareCall(sql);
statement.setInt(, );
statement.registerOutParameter(, Types.VARCHAR);
statement.execute();
String msg=statement.getString();
System.out.println(msg);
} catch (SQLException e) {
e.printStackTrace();
} finally {
ConnUtils.free(null, statement, conn);
}
} }

创建修改存储过程


CREATEORREPLACEPROCEDURE stu_proc
(
v_id INNUMBER,
v_name INVARCHAR2,
v_msg OUT VARCHAR2
) AS
v_flag number;
BEGIN
SELECT o.id INTO v_flag FROM student o WHERE o.id=v_id;
UPDATE student o SET o.sname=v_name WHERE o.id=v_id;
commit;
v_msg:='修改成功';
EXCEPTION
WHEN OTHERS THEN v_msg:='修改失败';
END;

java调用修改存储过程


package com.ljq.test;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Types; publicclass ProceTest { public static void main(String[] args) throws Exception {
Connection conn =null;
CallableStatement statement =null;
String sql ="{call stu_proc(?, ?, ?)}";
try {
conn = ConnUtils.getConnection();
statement = conn.prepareCall(sql);
statement.setInt(, );
statement.setString(, "laoli");
statement.registerOutParameter(, Types.VARCHAR);
statement.execute();
String msg=statement.getString();
System.out.println(msg);
} catch (SQLException e) {
e.printStackTrace();
} finally {
ConnUtils.free(null, statement, conn);
}
} }

JAVA调用oracle存储过程实例的更多相关文章

  1. Java调用oracle存储过程通过游标返回临时表数据

    注:本文来源于 <  Java调用oracle存储过程通过游标返回临时表数据   > Java调用oracle存储过程通过游标返回临时表数据 项目开发过程中,不可避免的会用到存储过程返回结 ...

  2. 用java 调用oracle存储过程总结

    SSM-Mybatis调用Oracle存储过程返回结果集(游标)示例 https://www.jianshu.com/p/0ae6d9d66d61 用java调用oracle存储过程总结 //1.ca ...

  3. 用java调用oracle存储过程总结(转)

    //1.call+包名+存储过程名(传入.传出值用?) String str="{call SMSBUSINESS.deleteZhZMember(?,?,?)}"; //2.建立 ...

  4. java基础---->java调用oracle存储过程(转)

    存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.今天 ...

  5. 用java调用oracle存储过程总结

    以前一直没有动存储过程是用来干嘛的,后来请教朋友才换为自己的理解方式,用自己通俗的语言来说,就是把sql语句换为一个过程,也可以说是一个方法,每次直接给参数调用就好,使用存储过程查询速度快,系统只编译 ...

  6. java基础---->java调用oracle存储过程

    存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.今天 ...

  7. 160307、Java调用Oracle存储过程返回结果集

    一:无返回值的存储过程调用 存储过程: CREATE OR REPLACE PROCEDURE PRO_1(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2)   AS BEGI ...

  8. 转:用java调用oracle存储过程总结(比较好理解)

    这段时间开始学习写存储过程,主要原因还是因为工作需要吧,本来以为很简单的,但几经挫折,豪气消磨殆尽,但总算搞通了,为了避免后来者少走弯路,特记述与此,同时亦对自己进行鼓励. 一:无返回值的存储过程 存 ...

  9. java调用oracle存储过程返回多条结果集

    oracle版本:11g oracle存储过程,使用游标的方式返回多行.多列数据集合: CREATE OR REPLACE PROCEDURE SP_DATA_TEST( /*P_ID IN INT, ...

随机推荐

  1. socket tcp使用recv接收数据时,返回errno错误代码88

    原因:就是recv函数的第一个参数不是可用的,也就是第一个参数不是建立连接时返回的文件描述符. 解决方法:xxx

  2. C++string类型转换为C数组

    #include <string> #include <iostream> using namespace std; int main(){ string str; str.a ...

  3. SQL Server数据库log shipping 灾备(Part2 )

    3.配置步骤: 主服务器(A机)设置 (1) 启用Log Shipping Configuration 右键单击需要配置日志传输的数据库->Tasks-> Ship Transaction ...

  4. 似水流年 ? Chrome调试大全

    http://www.360doc.com/content/12/1107/20/7851074_246467307.shtml   作为一名前端开发者,打交道最多的可能是和浏览器.市面上各种浏览器多 ...

  5. Codeforces Round #321 (Div. 2) E Kefa and Watch (线段树维护Hash)

    E. Kefa and Watch time limit per test 1 second memory limit per test 256 megabytes input standard in ...

  6. HTML5中Web存储

    HTML5 中web存储是一个比cookies更好的一个本地存储方式. 那么什么是HTML5存储呢? 使用HTML5可以在本地存储用户浏览的数据,HTML5技术没有出来之前是使用cookies进行本地 ...

  7. 解决cocos2dx 打包lua环境搭建问题( ImportError: No module named Cheetah.Template)

    将c++ 封装成lua调用时,显示一下错误: PYTHON_BIN not defined, use current python. generating userconf.ini... Genera ...

  8. 【线性基】bzoj2844: albus就是要第一个出场

    线性基求可重rank 题目描述 给定 n 个数 $\{ a_i \}$ ,以及数 $x$. 将 $\{ a_i \}$​ 的所有子集(包括空集)的异或值从小到大排序,得到 $\{ b_i \} $. ...

  9. 洛谷 P1147 连续自然数和

    洛谷 P1147 连续自然数和 看到dalao们的各种高深方法,本蒟蒻一个都没看懂... 于是,我来发一篇蒟蒻友好型的简单题解 #include<bits/stdc++.h> using ...

  10. mysql基本知识点

    1.建表格式:create table 表名(字段名 约束条件,字段名 约束条件,...);示例:create table brand(brand_id int unique primary key, ...