一。存储过程如下。
CREATE PROCEDURE CURSOR_BOOK @count int
AS
BEGIN
SET NOCOUNT ON --设置为ON,不返回计数
declare @error int
declare @temp varchar(50)--临时变量,用来保存游标值
set @error=0
BEGIN TRAN --申明事务
--申明游标
declare book_cursor CURSOR FOR select bookid from book
--打开游标
open book_cursor
WHILE @@FETCH_STATUS = 0 --返回被 FETCH 语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。
begin
-- 开始循环游标变量
FETCH NEXT FROM book_cursor INTO @temp
--执行sql操作
if(@count > 5)
select null as bookid,
null as bookname,
null as bookclassno,
null as author from book
else
begin
update book set content='test context' where bookid=@temp
set @error=@error+@@error --记录每次运行sql后 是否正确 0正确
end
end
if @error=0--没有错误 统一提交事务
begin
commit tran--提交
end
else
begin
rollback tran--回滚
end
select * from book where bookid >100005
CLOSE book_cursor--关闭游标
DEALLOCATE book_cursor--释放游标
SET NOCOUNT OFF --返回计数
END
二。JAVA的JDBC调用如下:
ResultSet rs = null ;
CallableStatement stmt = null;
String sp = "{call CURSOR_BOOK(?) }";
try {
stmt = conn.prepareCall(sp);
stmt.setInt(1, 3);
rs = stmt.executeQuery();
if(rs!=null){
while(rs.next()){
String bookid = rs.getString("bookid");
System.out.println("bookid:"+bookid);
String bookname = rs.getString("bookname");
System.out.println("bookname:"+bookname);
String author = rs.getString("author");
System.out.println("author:"+author);
}
}
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
注:多个SELECT存在一于一个存储过程时,返回第一个SELECT的结果集,有写操作时,如果不能正确返回结果集。问题原因有下。
1。JDBC调用用stmt.executeQuery();
2。存储过程中设置SET NOCOUNT ON ,影响行数
分享到:
相关推荐
SQL Server数据库中直接调用Web Service,不需要通过前台调用
创建存储过程: ALTER PROCEDURE [dbo].[GetCustomers] (@rowcount INT OUTPUT) AS SELECT [CustomerID] ,[CompanyName] ,[ContactName] ,[ContactTitle] ,[Address] ,[City] ,[Region] ,[PostalCode] ,...
SQL Server存储过程调用方法的研究.pdf
执行Sqlserver存储过程返回DataSet
VB 调用 sql server 存储过程。文档
Java中调用SQL Server存储过程 Eclipse 3.3
cmd = cn.prepareCall(sql); java.util.UUID Guid = java.util.UUID.randomUUID(); String FilePath = application.getRealPath("") + "\test\logo.gif"; java.io.FileInputStream f = new java.io....
jsp如何调用sqlserver存储过程,对于学习jsp是必不可少的
sql server调用存储过程,sql server,存储,过程,存储过程,java,jsp,EL
java调用sqlserver存储过程.pdf
在VB6.0中调用SQL Server的存储过程.pdf
后期对于投票结果需要进行一些权重的计算,过程比较复杂,便想到把计算过程放在SQL Server端,使用存储过程实现。但是,在调用存储过程的过程中却遇到了问题,一直无法返回记录集。最后发现问题出现在记录集的...
ADO.NET调用SQL Server存储过程,有参无参,传入传出
内容概要:简单的C# winform调用存储过程实例,创建存储过程入参,通过SqlConnection对象和SqlCommand对象调用存储过程,获取存储过程的出参并显示出来,详细代码注释,希望对用到C#调用存储过程的小伙伴有帮助 ...
1. 存储过程只在创造时进行编译即可,以后每次执行存储过程都不需再重新编译,而我们通常使用的SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。 2. 经常会遇到复杂的业务逻辑和对数据库的...
JSP调用SQL Server的存储过程
1. 使用不带参数的存储过程 2. 使用带有输入参数的存储过程 3. 使用带有输出参数的存储过程 4. 使用带有返回状态的存储过程 5. 使用带有更新计数的存储过程
sqlserver存储过程验证用户登录和账号是否停用或者被其他人登录中,适合新人写给新人 ,里面有张gif图,是一张动态的图片,交代了里面的一些表字段,演示了过程的调用,和对不同参数(错误)和列值返回的结果验证
jsp调用sqlserver2000存储过程