zoukankan      html  css  js  c++  java
  • 存储过程

    存储过程在我们后端开发很常用,我们经常在开发过程中需要写存储过程,其实存储过程没啥难的,就是一个固定的格式,最难的在于存储过程中我们要写的逻辑,业务方面的东西,这些就需要我们对业务逻辑比较熟悉才行。

    存储过程的代码结构如下

    CREATE  PROCEDURE [dbo].[存储过程名称]
        (
          -----参数
          @ReceiveAmount MONEY , --收款金额   
          @Result INT OUTPUT--返回值
        )
    AS
        BEGIN TRY
            BEGIN TRANSACTION; 
           --判断条件
            IF @ReceiveAmount > 0
                BEGIN
                    SET @Result = 1;
                    ROLLBACK TRANSACTION;  --回滚到最初状态
                    RETURN;
                END;
                --定义游标
            DECLARE SKW_cursor CURSOR LOCAL
            --LOCAL指定该游标的作用域对在其中创建它的批处理、存储过程或触发器是局部的。该游标名称仅在这个作用域内有效。在批处理、存储过程、触发器或存储过程 OUTPUT 参数中,该游标可由局部游标变量引用。OUTPUT 参数用于将局部游标传递回调用批处理、存储过程或触发器,它们可在存储过程终止后给游标变量指派参数使其引用游标。除非 OUTPUT 参数将游标传递回来,否则游标将在批处理、存储过程或触发器终止时隐性释放。如果 OUTPUT 参数将游标传递回来,游标在最后引用它的变量释放或离开作用域时释放。
            FOR
                SELECT  a.FIndex ,
                        a.FContractID ,
                        a.FEntryID ,
                        a.FAmount
                FROM    t_RPContractScheme a
                ORDER BY a.FIndex;
                --OPEN 语句填充结果集,
                --FETCH 从结果集返回行。
                --CLOSE 语句释放与游标关联的当前结果集。
                --DEALLOCATE 语句释放游标所使用的资源。
            OPEN SKW_cursor;
            FETCH NEXT FROM SKW_cursor INTO @findex, @fcontractid, @FSchemeEntryID, @famount;  
            --获取SKW_cursor的下一条数据,其中为字段分别赋值给对应参数
            WHILE @@FETCH_STATUS = 0  --假如检索到了数据继续执行
                BEGIN--1
                    IF ( @sumAmount < @ReceiveAmount )
                        BEGIN
                           ----SQL语句
                        END;
                    FETCH NEXT FROM SKW_cursor INTO @findex, @fcontractid,
                        @FSchemeEntryID, @famount;  
                END;--1
    
            CLOSE SKW_cursor;--关闭游标
            DEALLOCATE SKW_cursor;
    
            COMMIT TRANSACTION;--提交事务,此时数据才真正保存到数据库
        END TRY
    
    
        BEGIN CATCH 
            ROLLBACK TRANSACTION;  --出现异常的时候,回滚到最初状态
            SET @Result = 1;
            SELECT  ERROR_NUMBER() AS ErrorNumber ,
                    ERROR_MESSAGE() AS ErrorMessage;
        END CATCH;
    
    GO
  • 相关阅读:
    CMLLVDS
    js获取url中的参数(解决中文乱码)
    解决跳转出现 No input file specified.
    ThinkPHP关联模型详解
    Thinkphp表单自动验证
    手机号登录注册
    JS实现每隔一段时间数量增加或减少
    文章或者观点说说等点赞功能实现(thinkphp)
    thinkphp整合Ueditor编辑器
    点击切换状态 类似开关按钮
  • 原文地址:https://www.cnblogs.com/MirZhai/p/11249033.html
Copyright © 2011-2022 走看看