SQL存储过程,使用事务(try catch),游标

CREATE proc [dbo].[Sys_Rebate_Equity]

AS
declare @fMemberID varchar(50)--用户ID
declare @Rebate decimal(18,2)--总股权数

BEGIN
    begin try
     Begin Transaction    --开始事务
        DECLARE  cursor1 CURSOR for        --定义游标cursor1
        select fMemberID,sum(fNumber) as ‘fNumber‘ from BP_Equity where fNumber>0 group by fMemberID    --使用游标的对象
         open cursor1         --打开游标
         fetch next from cursor1 into @fMemberID,@Rebate    --将游标向下移1行,获取的数据放入之前定义的变量@fMemberID,@Rebate中
         while @@FETCH_STATUS=0    --判断是否成功获取数据
             begin
                select 1    --进行相应处理
                fetch next from cursor1 into @id    --将游标向下移1行
            end
        close cursor1    --关闭游标
        deallocate cursor1 --删除游标引用
        select 888
     Commit Transaction    --提交事务
    End Try
    Begin Catch
        if @@trancount > 0 ROLLBACK TRANSACTION --回滚事务
        Select 8888
    End Catch

END
时间: 2024-08-28 18:41:28

SQL存储过程,使用事务(try catch),游标的相关文章

sql存储过程和事务的应用

在去年,学习数据库的时候就学过存储过程了.一直都只知道一些理论,却不知道如何去使用.时隔一年,终于找到如何使用存储过程了. 在机房收费系统中,有些操作,需要多次执行sql语句,多次执行完成才算是完成这个事件流.但是如果其中有一个环节出了错误,那么没出错误的那些操作是不是就多余了. 执行存储过程,就是执行多句SQl语句.而事务,是为了控制这些语句 要么都做,要么 都不做. 在机房收费系统中,执行sql语句的时候. 一般的sql语句使用方法:定义一个字符串,用于存放sql语句.之后指明command

sql 存储过程、事务、视图、触发器

1存储过程1.1存储的格式 create proc name as begin 语句 end1.2执行存储 exec name1.3无参数 --创建存储过程if (exists (select * from sys.objects where name = 'sstudent')) drop proc sstudentgocreates studentas select * from student; --调用.执行存储过程exec student;1.4带参数--带参存储过程create pr

SQL 存储过程入门(事务)(四)

SQL 存储过程入门(事务)(四) 本篇我们来讲一下事务处理技术. 为什么要使用事务呢,事务有什么用呢,举个例子. 假设我们现在有个业务,当做成功某件事情的时候要向2张表中插入数据,A表,B表,我们插入的顺序是先插入A,再插入B表,如果都顺利插入成功了,当然没有问题,如果任意一张表插入失败了,而另一张表插入成功了,插入成功的表就是垃圾数据了.我们要判断,任意一张表插入失败都回滚,就是都不插入,这就是事务的基本使用. 一,sql事务定义 所谓事务是用户定义的一个数据库操作序列,是一个不可分割的工作

Mysql存储过程包含事务,且传入sql数据执行

有一个需求是:在一个图片按钮上点击,在按钮的上方弹出一个弹框,根据弹框的内容页面做不同的显示.这个其实没什么难的,主要是要控制好弹框的显示位置,让弹框显示在图片的正上方的中间. 一开始是用的Popupwindow,但是Popupwindow不能给弹窗之外的页面加一个半透明的蒙层,当然可以在页面上加一个专门的作为蒙层的View,但是很显然,这么做会代码变得很恶心,于是又换成了Dialog,因为Dialog弹出的时候会自动加一个蒙层的,但是这个时候,弹框显示位置的Y坐标不对了,后来一顿查,原来Dia

SQL存储过程+游标 循环批量()操作数据

本人收集的,挺有用的 1. 利用游标循环更新.删除MemberAccount表中的数据 DECLARE My_Cursor CURSOR --定义游标 FOR (SELECT * FROM dbo.MemberAccount) --查出需要的集合放到游标中 OPEN My_Cursor; --打开游标 FETCH NEXT FROM My_Cursor ; --读取第一行数据 WHILE @@FETCH_STATUS = 0 BEGIN --UPDATE dbo.MemberAccount SE

06 数据库入门学习-视图、sql注入、事务、存储过程

一.视图 1.什么是视图 视图本质是一张虚拟的表 2.为什么要用 为了原表的安全 只要有两大功能 1.隐藏部分数据,开放指定数据 2.视图可以将查询结果保存,减少sql语句的次数 特点: 1.视图使用永久保存的,而且保存的仅仅是一条 as sql语句 2.每次对视图的查询,都是再次执行了保存的sql语句 3.对于视图的任何修改都会同步到原表 3.如何使用 语法: create view 视图名 as select * from 原表名; 验证:对视图的任何修改会改变原表  验证 二.sql注入

SQL存储过程

1.认识存储过程 学完菜鸟上的SQL操作后打算好好深入下索引,然而学习过程中实际操作好多都是存储过程,所以只能先掌握存储过程再去深入索引了.使用存储过程有3个优点:存储过程是一个编译过的代码块,因此执行效率比t-sql高:使用存储过程可以不要写大量的t-sql语句,提高通信速率:通过存储过程能够使没有权限的用户在控制之下间接地存取数据库,保证数据的安全性.在SQL中存储过程分为系统存储过程和用户自定义存储过程,系统存储过程主要是以sp_为前缀的,下面是常用的系统存储过程,在我的sql里测试成功.

PL/SQL存储过程编程

/**author huangchaobiao *Email:[email protected] */ PL/SQL存储过程编程(上) 1. Oracle应用编辑方法概览 答:1) Pro*C/C++/... : C语言和数据库打交道的方法,比OCI更常用; 2) ODBC 3) OCI: C语言和数据库打交道的方法,和ProC很相似,更底层,很少用; 4) SQLJ: 很新的一种用Java访问Oracle数据库的方法,会的人不多; 5) JDBC 6) PL/SQL: 存储在数据内运行, 其他

一个简单的存储过程使用事务的例子

在存储过程中使用事务时非常重要,使用数据库可以保持数据的关联完整性,在SQL Server存储过程中使用事务也很简单,举个例子: Create Procedure MyProcedure ( @Param1 nvarchar(10), @Param2 nvarchar(10) ) AS Begin Set NOCUNT ON; Set XACT_ABORT on; Begin Tran Delete from table1 where name='abc'; insert into table2

SQL存储过程和函数

SQL存储过程: 由来:在具体应用中,一个完整的操作会包含多条SQL语句,在执行过程中需要根据前面SQL语句的执行结果有选择的执行后面的SQL语句.因此,mysql提供了数据库对象存储过程和函数. 定义:存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令.和函数的区别在于,函数有返回值,存储过程没有. 优点: 1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度.2.当对数据库进行复杂操作时,