java如何写存储过程

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java中对存储过程的调用

一: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

相关文档
最新文档