zoukankan      html  css  js  c++  java
  • 存储过程游标,事务的应用

    ALTER PROCEDURE [dbo].[userinfor2]
    @id int,
    @UserID int output
    AS
    BEGIN
    SET NOCOUNT ON;
    declare @name varchar(500)
    begin try
    BEGIN TRAN
    declare youbiao cursor for select id from UserInfor where id=@id
    declare @getid varchar(400)
    open youbiao
    begin
    fetch next from youbiao into @getid
    update UserInfor set name=@getid+'111' where id=@getid
    end
    close youbiao
    deallocate youbiao
    COMMIT
    end try
    BEGIN CATCH
    RETURN 222
    END CATCH
    begin
    set @name='dddddd'

    end
    select @name as name2
    return @UserID
    END

    ===============================

    官网一个小例子

    @@FETCH_STATUS

    返回类型

    整数

    回报值

    返回值描述
    0 FETCH语句成功。
    -1 FETCH语句失败或行超出结果集。
    -2 提取的行丢失。
    -9 光标未执行撷取操作。

    备注

    因为@@ FETCH_STATUS对连接上的所有游标是全局的,请仔细使用@@ FETCH_STATUS。执行FETCH语句后,@@ FETCH_STATUS的测试必须在对另一个游标执行任何其他FETCH语句之前进行。在连接发生任何提取之前,@@ FETCH_STATUS的值未定义。

    例如,用户从一个游标执行FETCH语句,然后调用存储过程,该过程打开并处理另一个游标的结果。当从调用存储过程返回控制时,@@ FETCH_STATUS反映在存储过程中执行的最后一个FETCH,而不是调用存储过程之前执行的FETCH语句。

    要检索特定游标的上次获取状态,请查询sys.dm_exec_cursors动态管理功能的fetch_status列。

    例子

    以下示例用于@@FETCH_STATUS控制WHILE循环中的游标活动

    DECLARE Employee_Cursor CURSOR FOR SELECT BusinessEntityID, JobTitle FROM AdventureWorks2012.HumanResources.Employee;

    OPEN Employee_Cursor;

    FETCH NEXT FROM Employee_Cursor;

    WHILE @@FETCH_STATUS = 0

    BEGIN

    FETCH NEXT FROM Employee_Cursor;

    END;

    CLOSE Employee_Cursor;

    DEALLOCATE Employee_Cursor;

    GO

         游标一般格式:
    DECLARE 游标名称 CURSOR FOR SELECT 字段1,字段2,字段3,... FROM 表名 WHERE ...
    OPEN 游标名称
    FETCH NEXT FROM 游标名称 INTO 变量名1,变量名2,变量名3,...
    WHILE @@FETCH_STATUS=0
            BEGIN
                      SQL语句执行过程... ...
                      FETCH NEXT FROM 游标名称 INTO 变量名1,变量名2,变量名3,...
            END
    CLOSE 游标名称
    DEALLOCATE 游标名称 (删除游标)

  • 相关阅读:
    Python linux 下安装Python requests包出错:[Errno 14] PYCURL ERROR 22
    Python 缺少requests模块,报错 ImportError: No module named requests
    Python eval()函数的用法
    Python 判断目录或文件是否存在
    Python 去重csv文件中相同的重复行
    python 合并两个csv文件
    2-3-配置DHCP服务器实现动态地址分配
    2-2-rsync 数据备份
    2-1-搭建Linux实验环境-sshd服务搭建与管理与防治暴力破解-课堂笔记
    Software Quality Assurance Framework(3)
  • 原文地址:https://www.cnblogs.com/suppler/p/6994243.html
Copyright © 2011-2022 走看看