精华内容
下载资源
问答
  • import java.sql.CallableStatement; import java.sql.Connection; import java.sql.SQLException; import java.sql.Types; import org.apache.log4j.Logger; import com.kingdee.bos.BOSException; import ...
    create or replace procedure testmz(inYear in NUMBER,
                                   inmonth in VARCHAR,
                                   qtynum out number
                                  )
    as
    begin
      select   b.cfone+b.cftwo+b.cfthree  into  qtynum   from  CT_BI_NORM a  inner join  CT_BI_NORMENTRY b on a.fid=b.fparentid  where  fnumber='00024'and a.cfinyear=inYear   and b.cfinmonth =inmonth   ;
    end;

    2、java中调用

    package com.kingdee.eas.custom.test.app;
    
    import java.sql.CallableStatement;
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.sql.Types;
    
    import org.apache.log4j.Logger;
    
    import com.kingdee.bos.BOSException;
    import com.kingdee.bos.Context;
    import com.kingdee.bos.dao.IObjectValue;
    import com.kingdee.bos.framework.ejb.EJBFactory;
    import com.kingdee.eas.custom.test.DemoInfo;
    import com.kingdee.util.db.SQLUtils;
    
    public class DemoControllerBean extends AbstractDemoControllerBean {
    	private static Logger logger = Logger
    			.getLogger("com.kingdee.eas.custom.test.app.DemoControllerBean");
    
    	@Override
    	protected void _excjob(Context ctx, IObjectValue model) throws BOSException {
    		// TODO Auto-generated method stub
    		DemoInfo info = (DemoInfo) model;
    		String inYear = info.getInYear();
    		String inmonth = info.getInMonth();
    		Connection conn = null;
    		CallableStatement pc = null;
    		try {
    			conn = EJBFactory.getConnection(ctx);
    			pc = conn.prepareCall("{call testmz (?,?,?) }");
    			//输入参数1
    			pc.setFloat(1,Float.parseFloat(inYear));
    			//输入参数2
    			pc.setString(2, inmonth);
    			//输出参数3
    			pc.registerOutParameter(3, Types.FLOAT);
    			pc.execute();
    			double double1 = pc.getDouble(3);
    			System.out.println("计算结果:----------"+double1+"---------------------------");
    		} catch (SQLException e) {
    			e.printStackTrace();
    		} finally {
    			SQLUtils.cleanup(pc, conn);
    		}
    
    		super._excjob(ctx, model);
    	}
    
    }

     

    展开全文
  • 一、Java调用存储Oracle存储过程测试用表:--创建用户表create tableUSERINFO(usernameVARCHAR2(50) not null,passwordVARCHAR2(50) not null,emailVARCHAR2(50) not null)1、调用输入参数的存储过程,无返回值--...

    一、Java调用存储Oracle存储过程

    测试用表:

    --创建用户表

    create tableUSERINFO

    (

    usernameVARCHAR2(50) not null,

    passwordVARCHAR2(50) not null,

    emailVARCHAR2(50) not null)

    1、调用输入参数的存储过程,无返回值

    --添加用户记录

    create or replace procedure pro_userinfo_insert(username VARCHAR2,password VARCHAR2,email VARCHAR2) is

    begin

    INSERT INTO userinfo VALUES(username,password,email);COMMIT;end pro_userinfo_insert;

    调用

    //省略jdbc其他代码//调用存储过程

    CallableStatement call = con.prepareCall("{call pro_userinfo_insert(?,?,?)}");//传递参数

    call.setString(1, "wangwu");

    call.setString(2, "123123");

    call.setString(3, "wangwu@163.com");//执行方法,调用存储过程

    int result =call.executeUpdate();//返回受影响的行数

    System.err.println(result);

    2、调用带输出参数的存储过程,返回单个值

    --获取用户的记录总数

    create or replace procedurepro_userinfo_SelectCount(

    v_count OUTINT)is

    begin

    SELECT COUNT(*) INTO v_count FROMUserinfo;end pro_userinfo_SelectCount;

    调用代码

    //调用存储过程

    CallableStatement call = con.prepareCall("{call pro_userinfo_selectcount(?)}");//传递参数

    call.registerOutParameter(1, Types.INTEGER);

    call.execute();

    System.out.println(call.getInt(1));

    注意,这里的proc.getInt(1)中的数值1并非任意的,而是和存储过程中的out列对应的,如果out是在第二个位置,那就是proc.getInt(2),如果是第三个位置,就是proc.getInt(3),当然也可以同时有多个返回值,那就是再多加几个out参数了。

    3、返回列表的存储过程

    由于oracle存储过程没有返回值,它的所有返回值都是通过out参数来替代的,列表同样也不例外,但由于是集合,所以不能用一般的参数,必须要用pagkage了.所以要分两部分。

    创建游标类型:

    --声明一个包,在包中声明公共的游标类型

    create or replace package shop_package IS

    --声明一个游标类型

    TYPE ref_cursor IS REF CURSOR;end shop_package;

    创建带游标的存储过程:

    --带输出游标的存储过程,参数类型为刚才创建的包中的游标类型

    create or replace procedure pro_userinfo_select(cur OUT shop_package.ref_cursor) is

    begin

    --游标进行绑定查询的sql语句

    OPEN cur FOR SELECT * FROMuserinfo;end pro_userinfo_select;

    Java调用代码

    //调用存储过程

    CallableStatement call = con.prepareCall("{call pro_userinfo_select(?)}");//设置输出参数类型为游标类型

    call.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);

    call.execute();//将游标类型转换为数据集,然后遍历数据集即可

    ResultSet rs = (ResultSet) call.getObject(1);

    System.out.println("姓名\t\t邮箱");while(rs.next()){

    System.out.println(rs.getString(1) + "\t\t" + rs.getString(3));

    }

    二、Java调用函数

    1、调用函数,返回单个值

    --根据用户名称获取Email函数,返回字符串格式

    create or replace function fun_userinfo_selectEmail(v_username varchar2)return varchar2

    isv_emailVARCHAR2(50);begin

    SELECT email INTO v_email FROM Userinfo WHERE username=v_username;return(v_email);end fun_userinfo_selectEmail;

    Java调用

    //调用函数

    CallableStatement call = con.prepareCall("{?=call fun_userinfo_selectemail(?)}"); //这里必须使用{},否则会报错!//设置参数,1为函数返回值,2为传递到函数中的参数

    call.registerOutParameter(1, Types.VARCHAR);

    call.setString(2, "zhangsan");

    call.execute();

    System.out.println(call.getString(1));

    2、调用返回游标的函数

    --返回游标类型的函数,游标为前面在包中定义的游标类型

    create or replace function fun_userinfo_select return shop_package.ref_cursor isref_cur shop_package.ref_cursor;begin

    OPEN ref_cur FOR SELECT * FROMuserinfo;return(ref_cur);end fun_userinfo_select;

    Java调用

    //调用函数

    CallableStatement call = con.prepareCall("{?=call fun_userinfo_select()}");//设置返回值类型为游标

    call.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);

    call.execute();

    ResultSet rs= (ResultSet) call.getObject(1);

    System.out.println("姓名\t\t邮箱");while(rs.next()){

    System.out.println(rs.getString(1) + "\t\t" + rs.getString(3));

    }

    展开全文
  • java如何获得存储过程的参数(例子)java如何获得存储过程的参数(例子)Connection conn = JDBCUtils.getConnection();DatabaseMetaData dbmd = conn.getMetaData();ResultSet rs = dbmd.getProcedureColumns(null, ...

    java如何获得存储过程的参数(例子)

    java如何获得存储过程的参数(例子)

    Connection conn = JDBCUtils.getConnection();

    DatabaseMetaData dbmd = conn.getMetaData();

    ResultSet rs = dbmd.getProcedureColumns(null, "DATAPUMP", "GET_INCOME_STATEMENT", "%");

    while (rs.next()) {

    String dbColumnName = rs.getString("COLUMN_NAME");

    short dbColumnReturn = rs.getShort("COLUMN_TYPE");

    switch (dbColumnReturn) {

    case DatabaseMetaData.procedureColumnReturn:

    System.out.println(dbColumnName+ " return");

    break;

    case DatabaseMetaData.procedureColumnIn:

    System.out.println(dbColumnName+ " in");

    break;

    case DatabaseMetaData.procedureColumnOut:

    System.out.println(dbColumnName+ " out");

    break;

    case DatabaseMetaData.procedureColumnInOut:

    &nbsp

    相关文档:

    1. 先从网上下载jdk(jdk-1_5_0_02-linux-i586.rpm) ,推荐SUN的官方网站www.sun.com,下载后放在/home目录中,当然其它地方也行。

    进入安装目录

    #cd /home

    #cp jdk-1_5_0_02-linux-i586.rpm /usr/local

    #cd /usr/local

    给所有用户添加可执行的权限

    #chmod +x jdk-1_5_0_02-linux-i586.rpm.bin

    #./jdk-1_5_0_02-lin ......

    一、JSP_选择题

    1. 以下选项中不是jsp隐式对象的是:( )

    A  pageContext

    B  context

    C  application

    D  out

    参考答案:B

    2. 下面哪一个不是JSP本身已加载的基本类?( )

    A  java.lang.*

    B  java.io.*

    C  javax.servlet.*

    D  javax.servlet.j ......

    一、

    使用泛型的好处在于,它在编译的时候进行类型安全检查,并且在运行时所有的转换都是强制的,隐式的,大大提高了代码的重用率。

    请看下面这个例子

    public class Gen {

    private T ob; // 定义泛型成员变量

    public Gen(T ob) {

    this.ob = ob;

    }

    public T getOb() { ......

    序列化就是把对象转换为流以存储到文件或传输给另一个程序;反序列化就是把流转换为对象。JAVA的序列化,是通过是java.io.Serializable接口来实现的。该接口不包含任何方法,仅标记是否可被序列化。可序列化的类,其成员也必须是可序列化的(如果有成员不能被序列化,则必须将该变量标记为:transient(瞬态),序列化时,� ......

    展开全文
  • import java.sql.CallableStatement;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Types;import org.junit.Test;import cn.hncu.pub....

    package cn.hncu.jdbc;

    import java.sql.CallableStatement;

    import java.sql.Connection;

    import java.sql.ResultSet;

    import java.sql.SQLException;

    import java.sql.Types;

    import org.junit.Test;

    import cn.hncu.pub.ConnUtils;

    /*

    * 演示Java中如何调用数据库中的存储过程

    *

    * 调用存储过程得用CallableStatement,

    * 它和PreparedStatement类似,也是Statement的子类,也可把用户输入用参数封装的方式防黑。

    * 即在父类的基础上增加了一些功能。

    *

    */

    public class CallableDemo {

    // 无参, 如 call p1();

    @Test

    public void demo1() throws Exception {

    Connection con = ConnUtils.getConn();

    // ※※※调用存储过程得用 CallableStatement语句对象

    CallableStatement cs = con.prepareCall("call p1()");

    ResultSet rs = cs.executeQuery(); // 如果存储过程调用之后会有返回结果,则最好用executeQuery()

    while (rs.next()) {

    System.out.println(rs.getString("name"));

    }

    con.close();

    }

    // 有输入参, 如 call p2('P011','小五',28);

    @Test

    public void demo2() throws Exception {

    Connection con = ConnUtils.getConn();

    // CallableStatement cs = con.prepareCall("call p2('P011','小五',28)");

    // //sql写死了

    CallableStatement cs = con.prepareCall("call p2(?,?,?)"); // sql写活

    cs.setString(1, "P201");

    cs.setString(2, "大王");

    cs.setInt(3, 45);

    ResultSet rs = cs.executeQuery(); // 如果存储过程调用之后会有返回结果,则最好用executeQuery()

    while (rs.next()) {

    System.out.println(rs.getString("name"));

    }

    con.close();

    }

    // 有输入参和返回值, 如 CALL p3('P012','小小五',27, @aa);

    @Test

    public void demo3() throws Exception {

    Connection con = ConnUtils.getConn();

    CallableStatement cs = con.prepareCall("call p3(?,?,?,?)"); // 最后一个?号是用于输出参数的

    //3个输入参数

    cs.setString(1, "P202");

    cs.setString(2, "大大王");

    cs.setInt(3, 55);

    //※※注册一个返回类型的参数

    cs.registerOutParameter(4, Types.INTEGER); //把第4个问号注册成输出参数

    //cs.execute(), cs.executeUpdate()

    ResultSet rs = cs.executeQuery(); // 如果存储过程调用之后会有返回结果,则最好用executeQuery()

    while (rs.next()) {

    System.out.println(rs.getString("name"));

    }

    //※※

    int n = cs.getInt(4); //获取存储过程的返回值,之前已经把它注册到第4个点位符了

    System.out.println("n="+n);

    con.close();

    }

    }

    展开全文
  • 我在从Java中的mysql存储过程检索OUT参数时遇到问题.CALL proc_after_topic_add('newtest',@result);SELECT @result;这个查询给了我想要的参数,但是我怎么在java.我尝试使用CallableStatement检索它但是我得到了java...
  • 创建存储过程: ALTER PROCEDURE [dbo].[GetCustomers] (@rowcount INT OUTPUT) AS SELECT [CustomerID] ,[CompanyName] ,[ContactName] ,[ContactTitle] ,[Address] ,[City] ,[Region] ,[PostalCode] ,...
  • java调用存储过程的方法,含还有out参数的存储过程,解决方案,在网上找了n久发现这样的资源太少,现在总结一下我的解决方案供大家分享,希望对大家有用
  • java调用存储过程

    2021-03-09 18:01:18
    调用不同数据库的存储过程的主要区别在于查询语句的写法以及获取返回值的方式不同,其他的方面都是一样的。调用Oracle存储过程1. 查询语句的写法String procStr = "CALL procNameSpace.procName(?,?,?)"call 必须要...
  • 详解java调用存储过程并封装成map发布于 2020-5-1|复制链接摘记: 详解java调用存储过程并封装成map 本文代码中注释写的比较清楚不在单独说明,希望能帮助到大家,实例代码:```javapublic List> doCallProcedure...
  • importjava.sql.CallableStatement;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.util.ArrayList;importoracle.sql.ARRAY;importoracle.sql.ArrayDescriptor;impor...
  • 数据库mysql存储中的入参出参理解

    千次阅读 2021-01-27 10:37:40
    在使用语句的时候,不可避免的要考虑参数的问题,而参数又是用来辅助变量的。有些小伙伴看到我们标题中的入参...入参出参语法: in|out|inout 参数名 数据类型 , ...in 定义出参; out 定义入参; inout 定义出参和...
  • java 中调用oracle的存储过程和jdbc的操作类似都是分以下几个步骤1:加载驱动2:链接数据库并获得一个数据库链接对象3:执行语句4:操作结果集5:关闭资源前提是:存储过程已写好create or replace procedure my_...
  • 实现思路:关键点在 通过存储过程的名字获取参数列表 数据库选择sql server 2012 查询的脚本是(注意要指定对应的数据库,如:使用 use test 或者 test.sys.parameters test.dbo.sysobjects): select * from sys...
  • Java代码获取oracle存储过程返回值

    千次阅读 2017-10-18 19:04:57
    Java代码获取oracle存储过程返回值  下面以student表为例 1、创建表student create table student( id number,  name varchar2,  age number,  sex varchar2 ) 2、创建存储过程:以id为条件查询student表...
  • import java.util.List;import com.egosystems.dbcore.CommandType;import com.egosystems.dbcore.DBGetResult;import com.egosystems.dbcore.DMLType;import com.egosystems.dbcore.DataTable;import ...
  • 需要用到的接口 接口 CallableStatement JDK文档对改接口的说明: public interface ...JDBC API 提供了一个存储过程 SQL 转义语法,该语法允许对所有 RDBMS 使用标准方式调用存储过程。此转义语...
  • JAVA调用数据库存储过程2014/11/6 18:20:14 可怜的猫 程序员俱乐部 我要评论(0)摘要:packagecom.ljq.test;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql....
  • java程序调用Oracle 存储过程 获取返回值(无返回,非结果集,结果集)oracle中procedure是不能有返回值的,要想返回值,就得有输出参数,同样要想返回记录集,可以把游标类型作为输出参数。下面是详细情况说明:一:...
  • 1、存储过程何意?何用?存储在数据库服务器上的,实现特定功能的,可以反复调用的,sql语句的集合。2、sqlserver的存储过程A:sql语句DDL:数据定义语言,create alter dropDML:数据操作语言,select insert ...
  • 数据库oracle存储过程代码: ```create or replace procedure updateSysOrgPerElem...我试过在存储过程中抛其它异常(比如把字母字符串插入到数字类型字段中),java代码能捕获到,好奇怪。。。 哪位大能能解答下
  • 我在MySQL中有一个过程,它有两个IN参数:userLogin(VARCHAR)和userPassword(VARCHAR),以及两个OUT参数:userID(INT)和userRights(VARCHAR) .该过程的工作原理如下:检查具有给定登录名和密码的用户是否在数据库中...
  • * procedureName是存储过程的名字 * name是JPA中存储过程的名字 * 使用注解@StoredProcedureParameter来定义存储过程使用的IN/OU书 */ @NamedStoredProcedureQuery(name = "TEST_JPA_PROCEDURES",procedureName =...
  • 1.调用函数CallableStatement cs=con.prepareCall("{?=call get_pname(?,?,?)}");第一个?表示返回的值,后面的?可以是输入参数,也可以是输出参数。第一个?是返回参数,所以必须有语句:...如果是输出...
  • 有时候在程序开发中,需要用到存储过程,这里讲解了在Springboot的项目下,Mybatis如何调用存储过程,以及 接收存储过程返回的多个结果集 Exam表结构 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- -----...
  • 转自:http://blog.csdn.net/kirbylynx/archive/2008/12/09/3483449.aspx比如SQL Server的一个存储过程:create procedure proc_test@q_type int,@value int,@count int outputasbeginupdate mytable set value = @...
  • 一、新建存储过程 如下代码中,关键字说明: IN :表示入 OUT:表示出参 RETURNING :表示语句执行完后的返回值。这里返回的是刚插入的数据的id SEQ_WORK_REPORT_ID.nextval:表示的是序列,读者自行新建序列。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 46,748
精华内容 18,699
关键字:

java获取存储过程的出参

java 订阅