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 游标名称 (删除游标)

  • 相关阅读:
    8天学通MongoDB(实际操作版)——第九天 构建学习型部署环境
    构建Ubuntu Server试验环境
    8天学通MongoDB(实际操作版)——第一天 基础入门
    《JAVA与模式》之适配器模式
    wsdl
    Axis2 Fault: Transport out has not been set
    诺基亚E63常见设置指南
    java面试题总结
    R400 安装XP后 ati2dvag蓝屏解决办法
    深入理解Java多态性
  • 原文地址:https://www.cnblogs.com/suppler/p/6994243.html
Copyright © 2011-2022 走看看