精华内容
下载资源
问答
  • java 调用存储过程

    2018-06-26 15:09:15
    java 调用存储过程java 调用存储过程java 调用存储过程java 调用存储过程java 调用存储过程java 调用存储过程java 调用存储过程
  • Java调用存储过程的2种方法 Java调用存储过程的2种方法 Java调用存储过程的2种方法
  • 创建存储过程java调用存储过程

    千次阅读 2015-12-16 18:05:36
    创建存储过程--get_jobname create or replace procedure get_jobname(v_jobid in varchar2,v_jobname out varchar2) as begin select job_name into v_jobname from schedule_job where job_id = v_jobid; --变量...

    创建存储过程--get_jobname

    create or replace procedure get_jobname(v_jobid in varchar2,v_jobname out varchar2)
    as
    begin
      select job_name into v_jobname from schedule_job where job_id = v_jobid; --变量赋值
    
    end get_jobname;
    

    java调用存储过程

    public static void main(String[] args) {
    	Connection conn=JdbcTool.getConnByJdbc();
    	String pro_param="26D9542B27A8663CE0531480140ABFE4";
    	String procedure="{call get_jobname(?,?)}";  
    	try {
    		 CallableStatement cs=conn.prepareCall(procedure);
    		 cs.setString(1, pro_param);
    		 cs.registerOutParameter(2, oracle.jdbc.OracleTypes.VARCHAR);
    		 cs.execute();
    		 String outpara=(String) cs.getObject(2);
    		 System.out.println(outpara);
    	}catch (Exception e) {
    		e.printStackTrace();
    	}finally{
    		JdbcTool.closeConnection(conn);
    	}
    }
    con.commit();
    cs.close(); //必须的代码,否则执行成功但是数据库没有记录

    展开全文
  • sql 存储过程的print 打印结果去了哪儿?java调用存储过程会打印吗?
  • java调用存储过程

    千次阅读 2018-08-29 10:48:05
    一:Java如何实现对存储过程的调用:  A:不带输出参数的  ---------------不带输出参数的---------------------------------- create procedure getsum @n int =0<--此处为参数--> as declare @sum ...

    一:Java如何实现对存储过程的调用:
       A:不带输出参数的
       ---------------不带输出参数的----------------------------------
    create procedure getsum
    @n int =0<--此处为参数-->
    as
    declare @sum int<--定义变量-->
    declare @i int
    set @sum=0
    set @i=0
    while @i<=@n begin
    set @sum=@sum+@i
    set @i=@i+1
    end
    print 'the sum is '+ltrim(rtrim(str(@sum)))


    --------------在SQL中执行:--------------------
       exec getsum 100


    ------------在JAVA中调用:---------------------
       JAVA可以调用   但是在JAVA程序却不能去显示该存储过程的结果 因为上面的存储
       过程的参数类型int 传递方式是in(按值)方式
       import java.sql.*;
    public class ProcedureTest 
    {
    public static void main(String args[]) throws Exception
    {
       //加载驱动
       DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
       //获得连接
       Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");


             //创建存储过程的对象
             CallableStatement c=conn.prepareCall("{call getsum(?)}");
            
             //给存储过程的参数设置值
             c.setInt(1,100);   //将第一个参数的值设置成100
            
             //执行存储过程
             c.execute();
             conn.close();
    }
    }
       
       B:带输出参数的
         1:返回int
             -------------------------带输出参数的----------------
    alter procedure getsum
    @n int =0,
    @result int output
    as
    declare @sum int
    declare @i int
    set @sum=0
    set @i=0
    while @i<=@n begin
    set @sum=@sum+@i
    set @i=@i+1
    end
    set @result=@sum
       -------------------在查询分析器中执行------------
       declare @myResult int
    exec getsum 100,@myResult output
    print @myResult

     

       ------------在JAVA中调用---------------------
    import java.sql.*;
    public class ProcedureTest 
    {
    public static void main(String args[]) throws Exception
    {
       //加载驱动
       DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
       //获得连接
       Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");


             //创建存储过程的对象
             CallableStatement c=conn.prepareCall("{call getsum(?,?)}");
            
             //给存储过程的第一个参数设置值
             c.setInt(1,100);
            
             //注册存储过程的第二个参数
             c.registerOutParameter(2,java.sql.Types.INTEGER);
            
             //执行存储过程
             c.execute();
            
             //得到存储过程的输出参数值
             System.out.println (c.getInt(2));
             conn.close();
    }
    }
         2:返回varchar
           ----------------存储过程带游标----------------
    ---在存储过程中带游标   使用游标不停的遍历orderid
    create procedure CursorIntoProcedure
    @pname varchar(8000) output
    as
    --定义游标
    declare cur cursor for select orderid from orders
    --定义一个变量来接收游标的值
    declare @v varchar(5)
    --打开游标
    open cur
    set @pname=''--给@pname初值
    --提取游标的值
    fetch next from cur into @v
    while @@fetch_status=0
       begin


    set @pname=@pname+';'+@v
       fetch next from cur into @v
    end
    print @pname
    --关闭游标
    close cur
    --销毁游标
    deallocate cur

     

       ------------执行存储过程--------------
    exec CursorIntoProcedure ''


       --------------JAVA调用------------------
    import java.sql.*;
    public class ProcedureTest 
    {
    public static void main(String args[]) throws Exception
    {
       //加载驱动
       DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
       //获得连接
       Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");
       CallableStatement c=conn.prepareCall("{call CursorIntoProcedure(?)}");
      
      
       c.registerOutParameter(1,java.sql.Types.VARCHAR);
      
       c.execute();
      
       System.out.println (c.getString(1));
       conn.close();
    }
    }
       C:删除数据的存储过程
         ------------------存储过程--------------------------


    drop table 学生基本信息表
    create table 学生基本信息表
    (
    StuID int primary key,
    StuName varchar(10),
    StuAddress varchar(20)
    )
    insert into   学生基本信息表 values(1,'三毛','wuhan')
    insert into   学生基本信息表 values(2,'三毛','wuhan')
    create table 学生成绩表
    (
    StuID int,
    Chinese int,
    PyhSics int
    foreign key(StuID) references   学生基本信息表(StuID)
    on delete cascade
    on update cascade

    insert into   学生成绩表 values(1,99,100)
    insert into   学生成绩表 values(2,99,100)


    --创建存储过程 
    create procedure delePro
    @StuID int
    as
    delete from 学生基本信息表 where StuID=@StuID
    --创建完毕
    exec delePro 1   --执行存储过程
    --创建存储过程
    create procedure selePro
    as
    select * from 学生基本信息表
    --创建完毕
    exec selePro   --执行存储过程
         ------------------在JAVA中调用----------------
    import java.sql.*;
    public class ProcedureTest 
    {
    public static void main(String args[]) throws Exception
    {
       //加载驱动
       DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
       //获得连接
       Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");


             //创建存储过程的对象
             CallableStatement c=conn.prepareCall("{call delePro(?)}");
            
             c.setInt(1,1);
            
             c.execute();
            
             c=conn.prepareCall("{call selePro}");
             ResultSet rs=c.executeQuery();
            
             while(rs.next())
             {
             String Stu=rs.getString("StuID");
             String name=rs.getString("StuName");
             String add=rs.getString("StuAddress");
             
             System.out.println ("学号:"+"     "+"姓名:"+"     "+"地址");
             System.out.println (Stu+"     "+name+"   "+add);
             }
             c.close();
    }
    }
       D:修改数据的存储过程
    ---------------------创建存储过程---------------------
       create procedure ModPro
    @StuID int,
    @StuName varchar(10)
    as
    update 学生基本信息表 set StuName=@StuName where StuID=@StuID

     

       -------------执行存储过程-------------------------
    exec ModPro 2,'四毛'
       ---------------JAVA调用存储过程--------------------
    import java.sql.*;
    public class ProcedureTest 
    {
    public static void main(String args[]) throws Exception
    {
       //加载驱动
       DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
       //获得连接
       Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");


             //创建存储过程的对象
             CallableStatement c=conn.prepareCall("{call ModPro(?,?)}");
            
             c.setInt(1,2);
             c.setString(2,"美女");
                    
             c.execute();
            
             c=conn.prepareCall("{call selePro}");
             ResultSet rs=c.executeQuery();
            
             while(rs.next())
             {
             String Stu=rs.getString("StuID");
             String name=rs.getString("StuName");
             String add=rs.getString("StuAddress");
             
             System.out.println ("学号:"+"     "+"姓名:"+"     "+"地址");
             System.out.println (Stu+"     "+name+"   "+add);
             }
             c.close();
    }
    }
       E:查询数据的存储过程(模糊查询)
         -----------------存储过程---------------------
    create procedure FindCusts
    @cust varchar(10)
    as
    select customerid from orders where customerid 
    like '%'+@cust+'%'
         ---------------执行---------------------------
    execute FindCusts 'alfki'
       -------------在JAVA中调用--------------------------
    import java.sql.*;
    public class ProcedureTest 
    {
    public static void main(String args[]) throws Exception
    {
       //加载驱动
       DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
       //获得连接
       Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");


             //创建存储过程的对象
             CallableStatement c=conn.prepareCall("{call FindCusts(?)}");
             c.setString(1,"Tom");
            
             ResultSet rs=c.executeQuery();
            
             while(rs.next())
             {
             String cust=rs.getString("customerid");        
             System.out.println (cust);
             }
             c.close();
    }
    }
       F:增加数据的存储过程


    ------------存储过程--------------------
    create procedure InsertPro
    @StuID int,
    @StuName varchar(10),
    @StuAddress varchar(20)
    as
    insert into 学生基本信息表 values(@StuID,@StuName,@StuAddress)


    -----------调用存储过程---------------
    exec InsertPro 5,'555','555'
    -----------在JAVA中执行-------------
    import java.sql.*;
    public class ProcedureTest 
    {
    public static void main(String args[]) throws Exception
    {
       //加载驱动
       DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
       //获得连接
       Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");


             //创建存储过程的对象
             CallableStatement c=conn.prepareCall("{call InsertPro(?,?,?)}");
             c.setInt(1,6);
             c.setString(2,"Liu");
             c.setString(3,"wuhan");
            
             c.execute();
            
             c=conn.prepareCall("{call selePro}");
             ResultSet rs=c.executeQuery();
            
             while(rs.next())
             {
             String stuid=rs.getString("StuID");        
             String name=rs.getString("StuName");        
             String address=rs.getString("StuAddress");        
             System.out.println (stuid+"   "+name+"   "+address);
             }
             c.close();
    }
    }


    G:在JAVA中创建存储过程   并且在JAVA中直接调用
    import java.sql.*;
    public class ProcedureTest 
    {
    public static void main(String args[]) throws Exception
    {
       //加载驱动
       DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
       //获得连接
       Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");
      
      
       Statement stmt=conn.createStatement();
       //在JAVA中创建存储过程
       stmt.executeUpdate("create procedure OOP as select * from 学生成绩表");
      
      
       CallableStatement c=conn.prepareCall("{call OOP}");
      
       ResultSet rs=c.executeQuery();
       while(rs.next())
       {
       String chinese=rs.getString("Chinese");
       
       System.out.println (chinese);
       }
       conn.close();
      
    }

    展开全文
  • Java 存储过程

    千次阅读 2018-06-13 11:20:17
    什么是存储过程 stored procedure允许将运行于数据库层中的持久性逻辑与运行于中间层的商务逻辑有效地分离开来。这种分离可以降低整个应用程序的复杂性,并提供其重用性、安全性、性能和可伸缩性。 它非常类似于...

    什么是存储过程

    stored procedure允许将运行于数据库层中的持久性逻辑与运行于中间层的商务逻辑有效地分离开来。这种分离可以降低整个应用程序的复杂性,并提供其重用性、安全性、性能和可伸缩性。

    它非常类似于Java语言的方法,它可以重复调用。当存储过程执行一次后,可以将语句缓存,这样下次执行的时候直接使用缓存中的语句,这样就可以提高存储过程的性能。

    但是,妨碍存储过程广泛使用的一个主要障碍是不同数据库厂商使用各种专有的、且依赖于数据库的实现语言。使用基于Java在存储过程可以解决这一问题。

    选择PL/SQL还是Java

     

    • 对于要求与SQL进行无缝集成的数据库中心来说,使用PL/SQL,从而完成对数据库对象、类型和特性的访问。
    • 出于与数据库的无关性考虑时,可以选择Java。OracleJVM使得Java可以运行在数据库中。

     

    Grails访问存储过程

    给Grails项目配置好数据源以后,就可以访问数据库了。Grails开发平台已经为我们配置好了Hibernate,我们可以使用GORM通过Hibernate访问访问数据库。下面使用GSQL访问存储过程。

    例子:

    1.我们有一个叫“PA_PPRM_PivotCar.P_Tran”的存储过程,有三个输入参数,没有输出参数。作用是简单的insert。

    下面我们来访问这个存储过程。
    class LoginService {
       
            def dataSource
       
        def check(User u) {
     
    我们对存储过程的访问都是在service层进行的,注意声明dataSource,这样Grails平台会将dataSource对象通过Spring注入进来,我们就可以在服务层使用数据源了。
    我们对存储过程的访问在check(User u)方法里,下面是代码:
            Sql sql = new Sql(dataSource)
           
           
    上面的代码是初始化Sql对象,记得引入该类,“import groovy.sql.Sql”,然后就可以访问存储过程了:
            sql.call("call PA_PPRM_PivotCar.P_Tran(?,?,?)",['3','cheng','m'])
    }

    下面我们把上面的“PA_PPRM_PivotCar.P_Tran”进行改造,给这个存储过程一个返回值。

        def retn
          
           sql.call("call PA_PPRM_PivotCar.P_Tran(?,?,?,?)",['3','cheng','m', Sql.VARCHAR]){
               retn = it
        }

    可以看到,存储过程后面跟着四个问号,其中三个代表入参,最后一个代表出参。

    下面,我们再把存储过程的输出参数难度加大,我们现在有这样一个存储过程“PA_PPRM_PivotCar.P_PivotCar_GetList”,它有一个输入参数,还有一个输出参数,但这个输出参数是游标。

    sql.call("call PA_PPRM_PivotCar.P_PivotCar_GetList(?,?)",['2008',Sql.resultSet(OracleTypes.CURSOR)]){
            carModel ->
                 carModel.eachRow(){
                    x ->
                     println"car style: ${x.carStyle},car series: ${x.carseries},car type: ${x.cartype}"
                 }
            }

     

    最后欢迎大家访问我的个人网站:1024s​​​​​​​

    展开全文
  • java web 存储过程 和 后台逻辑 哪个性能好。。。。。。
  • java调用存储过程报诡异异常

    千次阅读 2013-07-19 13:48:57
    java调用存储过程报错:com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near '@P0'.然后我的存储过程中并没有“@PO”这个东西 我的原因是因为CallableStatement proc = conn.prepareCall("{...

    java调用存储过程报错:com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near '@P0'.然后我的存储过程中并没有“@PO”这个东西

    我的原因是因为CallableStatement proc = conn.prepareCall("{call temp2official(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}");
    这里开始调用存储过程是CallableStatement proc = conn.prepareCall("call temp2official(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); 没有加大括号

    展开全文
  • JAVA存储过程

    千次阅读 2007-08-09 15:35:00
    利用Java存储过程简化数据库操作作者:Kuassi Mensah 利用Java存储过程沟通SQL、XML、Java、J2EE和Web服务。 存储过程(stored procedure)允许将运行于数据库层中的持久性逻辑与运行于中间层中的商务逻辑有效地分离...
  • 1.定义一个存储过程(不带参数) 使用sql语句定义一个存储过程挺简单的,参考这一篇博文https://blog.csdn.net/qq_44973159/article/details/91491985 create procedure ccgc...package java617存储过程; impor...
  • Java调用存储过程

    千次阅读 2004-02-22 23:18:00
    原文:http://www.onjava.com/pub/a/onjava/2003/08/13/stored_procedures.html by Nic Ferrier 本文阐述了怎么使用DBMS存储过程。我阐述了使用存储过程的基本的和高级特性,比如返回ResultSet。本文假设你对DBMS...
  • java调用存储过程 返回结果集

    千次阅读 2017-03-28 18:26:58
    Java代码调用存储过程: public Map rankInfo(Map rankMap,String start,String end, String userId,String officeId, String rankType,String timeType){ try { //排名前十的用户答题详情 List topTenUsers = ...
  • ORACLE存储过程

    万次阅读 多人点赞 2018-11-02 18:14:48
    oracle存储过程 ...为什么要写存储过程 三.存储过程基础 1.存储过程结构 2.存储过程语法 3.pl/sql处理存储过程 四.存储过程进阶 1.BUIK COLLECT 2.FORALL 3.pl/sql调试存储过程 4.案例实战 ...
  • 学习下oracle的存储过程增删改查操作以及java调用存储过程 好久没发blog了,今天发下这两天学习的成果---存储过程 也可以让学习oracle的同学学习下 首先打开PL/SQL创建一张表emp_copy drop table emp_copy; ...
  • JAVA 执行存储过程 得到乱码

    千次阅读 2011-01-27 18:01:00
    存储过程写死的值: SELECT -1 AS iRet , "用户名或者密码错误" AS strErr , 0 AS iDbId;   JAVA是GBK编码 后来发现,必须把NAVICAT的连接属性改为GBK之后,编辑存储过程才是GBK的。
  • Java调用Oracle存储过程

    千次阅读 2015-11-17 22:18:42
    1、编写Oracle存储过程 2、编写数据库获取连接工具类 3、编写简单应用调用存储过程 实现: 1、Oracle存储过程: /*测试表*/ create table test( id varchar2(32), name varchar2(32) ); /*存储过程 ...
  • 这是自己这段时间学习Oracle数据库的一些有关存储过程Java中调用存储过程的学习心得。
  • java调用存储过程和游标

    千次阅读 2010-06-29 15:45:00
    一:无返回值的存储过程存储过程为:CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2) ASBEGIN INSERT INTO HYQ.B_ID (I_ID,I_NAME) VALUES (PARA1, PARA2);END TESTA;然后呢,在java里...
  • 如何用JAVA调用存储过程

    千次阅读 2008-11-27 08:57:00
    如何用JAVA调用存储过程CallableStatement 对象为所有的 DBMS 提供了一种以标准形式调用已储存过程的方法。已储存过程储存在数据库中。对已储存过程的调用是 CallableStatement对象所含的内容。这种调用是用一种换码...
  • java调用存储过程和事务

    千次阅读 2014-11-23 23:30:07
    java调用mysql存储过程的实例 ConnUtils连接工具类:用来获取连接、释放资源
  • JAVA调用存储过程--传入集合参数

    万次阅读 2010-12-29 10:36:00
    JAVA调用存储过程--传入集合参数
  • JAVA执行存储过程接收返回值

    千次阅读 2014-04-09 11:31:44
    //执行存储过程"?"为需传递的参数 statement.setString(1, productCode);//传递参数 ResultSet rs = statement.executeQuery(); //循环拿出返回的值 while (rs.next()) { Object[] object = new Object[2]; ...
  • 使用java实现oracle存储过程。 共有3个小例子。实现的功能 1、无返回值的存储过程 如 insert 2、有返回值的存储过程(非列表)select id from tab 3、返回列表 如:select * from tab 顺便鄙视下csdn,作为一个it...
  • java调用存储过程实现分页功能

    千次阅读 2014-09-17 20:10:16
    创建程序包: SQL> create or replace package mypack 2 as 3 type emp_cursor is ref cursor; 4 end mypack; 5 / 程序包已创建。 创建存储过程
  • java调用oracle存储过程总结

    千次阅读 2019-02-13 17:48:55
    java调用oracle存储过程总结 //1、call+包名+存储过程名(传入、传出值用?)   String str="{call SMSBUSINESS.deleteZhZMember(?,?,?)}"; //2、建立连接  Connection conn=null;  conn=...
  • Java 调用MySQL存储过程

    千次阅读 2014-08-17 22:50:36
    使用到java.sql.CallableStatement接口,该接口专门用来调用存储过程,该对象的获得依赖于java.sql.Connection,通过Connection实例的prepareCall()方法返回CallableStatement对象, prepareCall()内部为一固定写法...
  • Java代码调用存储过程和存储方法

    万次阅读 2017-05-11 23:07:49
    准备一个oracle 的JDBC jar 包:ojdbc14_11g.jar 首先找到你的 oracle 安装位置,例如: ...1.创建一个JDBC数据库连接...import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet;
  • Java调用存储过程(带输出参数)

    千次阅读 2008-04-22 16:02:00
    上星期老师布置实验,题目中有一个要求用Java来调用存储过程。为了完成作业,在网上差了好些资料还看过视频,现在终于有点眉目了。以为自己找的有点辛苦,想必其他人也会如此,因此想把自己编程的经验和大家一块分享...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 775,840
精华内容 310,336
关键字:

java写存储过程

java 订阅