zoukankan      html  css  js  c++  java
  • sql游标简单试用

    需求:现在有2张表,一张是gongzi表--工资表,有2个字段ID 员工号(int)、gongzi工资(money);另一张表addgongzi表—加薪表。有2个字段,ID员工号、addgongzi增加工资。两张表的ID是一一对应的,现在求将加薪的工资+原来的工资=现在的工资,也就是gongzi=gongzi+addgongzi,修改表gongzi的工资字段。

    这个问题用程序来实现很简单,但是咱们今天不说程序,就说游标:

    游标的好处:

    1、允许定位在结果集的特定行

    2、从结果集的当前位置检索一行或一部分行

    3、支持对结果集总当前位置的行进行数据修改

    4、为由其他用户对显示在结果集中的数据库数据所做的更改提供不同级别的可见性支持

    5、提供脚本储存过程和触发器中用于访问结果集数据的T-SQL语句

    游标的基本操作:

    1、声明游标

    2、打开游标

    3、读取游标

    4、关闭游标

    5、删除游标

    本例解决方法,为执行方便,我使用了存储过程

    --新建储存过程proc_addgongzi
    create PROCEDURE proc_addgongzi AS 
    --声明游标
    DECLARE cur_addgongzi CURSOR
    for 
    select * from addgongzi
    --声明变量
    DECLARE  @ID int
    DECLARE  @addgongzi money
    --打开游标
    open cur_addgongzi
    --读取游标
    fetch next from cur_addgongzi into @ID,@addgongzi
    while (@@fetch_status=0) 
    begin 
    --修改数据
    update gongzi set gongzi=gongzi+@addgongzi where ID=@ID
    --修改完成后继续读取游标
    fetch next from cur_addgongzi into @ID,@addgongzi
    end
    --关闭游标
    close cur_addgongzi
    --删除游标
    deallocate cur_addgongzi

    执行结果:

    over

     


    //成功一定有方法,失败一定有原因。
  • 相关阅读:
    面试题 31: 求子数组的最大和
    [面试] 结构体占用空间的问题,内存对齐~! 真的懂了,cpu取加快速度,省空间来考虑。
    [计算机] 32768~32767 计算机中的 1 表示
    C#跨线程调用窗体控件
    合并字节数组
    将汉字转化为2位大写的16进制Unicode
    关公与子龙两大杀手
    早年的J2EE笔记
    给小组新成员的一份信
    c++虚函数详解
  • 原文地址:https://www.cnblogs.com/webapi/p/2462482.html
Copyright © 2011-2022 走看看