一、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(); } }
转载http://technicalsearch.iteye.com/blog/1433293
发表评论
-
Java网络编程实现多客户端连接服务器
2012-08-09 14:23 1349使用多线程实现多客户端连接服务器, 客户端代码如下: ... -
多线程Java Socket编程示例
2012-08-09 15:34 616转载:http://www.blogjava.net/ster ... -
Java环境变量配置
2012-08-09 16:42 669Java环境变量配置如下: 打开我的电脑--属性--高级-- ... -
Java IO操作之FileWriter、FileReader
2012-08-09 16:44 684Java IO流主要有以下几种分类方式: 1、按照输入的方向 ... -
读取ApplicationResources.properties资源文件
2012-08-06 11:03 11641、使用java国际化提供的方法读取 ? -
Java获得当前时间
2012-08-06 11:03 743public class -
Oracle触发器中的new和old
2012-08-06 11:02 963对于Oracle触发器中的new和old :new - ... -
Oracle常用函数整理
2012-08-06 10:49 8841、replace函数replace这个函数,具体用法 ... -
java IO操作
2012-07-31 17:26 01 InputStream类型 InputStre ... -
Java Calendar的用法
2012-07-31 08:34 740/** * 计算指定日期为当年第几周 * ... -
实现Servlet定时器
2012-07-30 17:17 640转载:http://windking88.iteye.com/ ... -
java定时器Listener
2012-07-30 15:37 0java定时任务,每天定时执行任务 java定时任 ... -
java定时器
2012-07-30 15:27 0java web 定时器 JAVA WEB定时器 ... -
java遍历map
2012-07-30 13:45 0JDK1.4中 Map map = new HashMap() ... -
oralce 小知识
2012-07-26 09:16 01、replace函数 replace这个函数,具体 ... -
Java 统计各个单词的个数并排序
2012-05-23 08:53 0这个比较简单,我用来练练手,觉得好玩,便把代码贴出来,比 ... -
java匹配字符串
2012-05-23 08:52 0使用正则表达式啊 Pattern p = Patt ... -
java读取文件
2011-12-02 14:03 6281、按字节读取文件 ... -
Java将字符串保存到文件中
2011-12-01 17:17 3750public void WriteToFile1() thro ...
相关推荐
java 调用存储过程java 调用存储过程java 调用存储过程java 调用存储过程java 调用存储过程java 调用存储过程java 调用存储过程
java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程
Java调用存储过程的2种方法 Java调用存储过程的2种方法 Java调用存储过程的2种方法
java调用存储过程的方法,含还有out参数的存储过程,解决方案,在网上找了n久发现这样的资源太少,现在总结一下我的解决方案供大家分享,希望对大家有用
java 调用存储过程 总结 创建表 创建存储过程 创建java程序调用
java调用oracle存储过程或者函数
Java调用Oracle存储过程的方法
Java调用存储过程--传入集合参数 具体的方法描述分析
能不能写个动态的业务,只输入存储过程名称,自动...只写一个通用方法,就可以调用所有的存储过程。只根据输入不同的存储过程名称、参数内容,自动调用不同的存储过程。 已经使用在多个项目中 全开源项目 请放心下载
通过实例详细介绍了用java调用oracle存储过程的方法和步骤,包括无返回值的存储过程、有返回值的存储过程(非列表)和返回列表的存储过程的编写、JAVA调用,是一个对存储过程调用的一个全面总结,对程序开发具体实际...
java调用存储过程实例,详细实例!!!!!!!!!
Java程序调用存储过程 Java程序调用存储过程 Java程序调用存储过程 Java程序调用存储过程 Java程序调用存储过程
java 调用 mysql存储过程实例
一、调用存储过程(无结果集返回) Connection connection = ConnectionHelper.getConnection(); CallableStatement callableStatement = connection.prepareCall("{ call procedureName(?,?) }"); ...
java调用存储过程返回数组 学习下 对你会有不小的帮助
JAVA调用存储过程.txtJAVA调用存储过程.txtJAVA调用存储过程.txtJAVA调用存储过程.txt