zoukankan      html  css  js  c++  java
  • JDBC和JPA调用储存过程 接收存储过程有返回值

    ============jdbc==========================================
    --java代码:一个输出参数--
    String connURL = null;
    Connection conn = null;  
    connURL = "jdbc:sqlserver://192.168.1.157;instanceName=eqmis;DatabaseName=eqmis";
    String sqldriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    Class.forName(sqldriver);// 注册加载驱动程序
    conn = DriverManager.getConnection(connURL, "sa","1.0");
     CallableStatement proc = conn.prepareCall("{ call test(?) }");    //只有一个输出参数
    proc.registerOutParameter(1,Types.VARCHAR);
    proc.execute();
    ystem.out.println(proc.getString(1));

    --储存过程(mssql)一个输出参数--
    if exists(select * from sysobjects where name='test')
    drop proc test
    go
    create proc test
    @mycarID char(19)output--输出参数  
    as
    declare @r numeric(15,8),--接收随机数
    @tempr varchar(20)--转换随机数
    select @r=RAND((datepart(mm,getdate())*100000)+(DATEPART(SS,GETDATE())*1000)+
    (DATEPART(MS,GETDATE())))
    select @tempr=CONVERT(varchar(20),@r)
    select @mycarID= '1010 3576'+' '+SUBSTRING(@tempr,3,4)+' '+SUBSTRING(@tempr,7,4)
    return
    go


    -------java代码:一个输入参数和一个输出参数---
    String connURL = null;
    Connection conn = null;
    connURL = "jdbc:sqlserver://192.168.1.157;instanceName=eqmis;DatabaseName=eqmis";
    String sqldriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    Class.forName(sqldriver);// 注册加载驱动程序
    conn = DriverManager.getConnection(connURL, "sa","1.0");
    CallableStatement proc = conn.prepareCall("{ call test(?,?) }");    
    proc.setString(1,"12345");
    proc.registerOutParameter(2,Types.VARCHAR);//第二个是输出参数
    proc.execute();
     System.out.println(proc.getString(2));

    --储存过程(mssql)一个输入参数和一个输出参数---
    if exists(select * from sysobjects where name='test')
    drop proc test
    go
    create proc test
    @getIndex varchar(5),--输入参数
    @mycarID char(19)output--输出参数   
    as
    declare @r numeric(15,8),--接收随机数
    @tempr varchar(20)--转换随机数
    select @r=RAND((datepart(mm,getdate())*100000)+(DATEPART(SS,GETDATE())*1000)+
    (DATEPART(MS,GETDATE())))
    select @tempr=CONVERT(varchar(20),@r)
    select @mycarID= @getIndex+' '+SUBSTRING(@tempr,3,4)+' '+SUBSTRING(@tempr,7,4)
    return
    go

    =====jap:=================================

    -------JPA调用储存过程(mssql)注意:EJB3不能调用以OUT参数返回值的存储过程。--
    create proc testJpa2
    @acode varchar(20)
    as
    begin
    select * from pubuser where acode=@acode
    end
    go

    -------jap:dao--------------------------
    String jpql= "{call testJpa2(?)}";
    Query obj = em.createNativeQuery(jpql);
    bject[] params=new Object[]{'1'}
    if (params != null && params.length > 0) {
    for (int i = 0; i < params.length; i++) {
    obj.setParameter(i + 1, params[i]);
    }
    }
    obj.getResultList().toString();

  • 相关阅读:
    【转载】网站服务器运维记实:阿里云1核2G突发性能t5服务器突然变得卡顿
    【转载】C#中自定义Sort的排序规则IComparable接口
    【转载】C#将图片转换为二进制流调用
    【转载】ASP.NET MVC重写URL制作伪静态网页,URL地址以.html结尾
    Java通过反射机制修改类中的私有属性的值
    Android -- 分享功能和打开指定程序
    Java存储密码用字符数组
    java笔试题(3)
    Java中的String与常量池
    Android -- 距离感应器控制屏幕灭屏白屏
  • 原文地址:https://www.cnblogs.com/qgc88/p/3443037.html
Copyright © 2011-2022 走看看