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

  • 相关阅读:
    sharpen和filter2D
    Changing the contrast and brightness of an image!(opencv对比度和亮度调节)
    人脸表情识别
    Pycharm下载和安装
    Anaconda下载与安装
    图像人脸检测+人眼检测 (opencv + c++)
    cv2.VideoWriter()指定写入视频帧编码格式
    python_openCV例程遇到error: (-215) !empty() in function cv::CascadeClassifier::detectMultiScale的简单解决方法
    图像处理库 Pillow与PIL
    IDE bulid构建隐藏了什么(预处理->编译->汇编->链接)
  • 原文地址:https://www.cnblogs.com/suppler/p/6994243.html
Copyright © 2011-2022 走看看