• BI-SQL丨游标


    游标

    游标这个概念在SQL中比较重要,在其他语言中也有类似的处理办法。

    那么什么是游标呢?简而言之,SQL语句返回的结果通常为数据集,而游标可以在此基础上,像一个指针一样,对某些行结果进行处理,换成PowerBI中的概念有点像迭代遍历。

    适用场景

    1.某些场景下,针对SELECT返回的集合,需要进行逐行读取,或者针对行数据进行某些操作。

    2.在某些交互式程序中,集合不能作为有效的处理单元,这时候需要有针对的逐行或者部分进行处理。

    使用步骤

    1.声明游标:定义游标的名称、类型、属性。

    2.打开游标:执行SQL语句,准备对游标进行操作。

    3.读取游标:从结果集检索,进行逐行操作。

    4.关闭游标:将游标进行关闭,可以使用Open再次打开。

    5.释放游标:删除缓存并释放游标的占用资源。

    声明游标语法

    DECLARE 游标名称 CURSOR                               --游标命名
    [ LOCAL | GLOBAL ]                                   --游标的作用域
    [ FORWORD_ONLY | SCROLL ]                            --游标的移动方向
    [ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ]         --游标的类型
    [ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ]            --游标的访问类型
    [ TYPE_WARNING]                                      --类型转换警告语句
    FOR SELECT 语句                                      --SELECT查询语句
    [ FOR { READ ONLY | UPDATE [OF 列名称]}][,...n]      --可修改的列
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    使用实例

    案例数据:

    在白茶本机的数据库中存在名为“CaseData”的数据库。"Dim_Product"产品表。

    例子1:

    声明名为test1的游标,使test1与产品表进行关联。

    DECLARE test1 CURSOR SCROLL 
    FOR SELECT * FROM Dim_Product
    DECLARE @test1 CURSOR
    SET @test1=test1
    
    • 1
    • 2
    • 3
    • 4

    结果如下:

    注意:这里白茶在声明test1的时候,使用了SCROLL,如果不进行此表明的话,则只能进行NEXT提取操作,表明了则可以进行FIRAT、LAST、PRIOR、NEXT等所有的操作。

    例子2:

    打开游标,并查看当前游标数据行数。

    OPEN test1
    SELECT '游标数据行数' =@@CURSOR_ROWS        --全局变量,查看数据行数
    
    • 1
    • 2

    结果如下:


    对比原始数据,可以发现符合我们预期。

    例子3:

    读取游标。

    FETCH NEXT FROM test1
    SELECT '执行情况'=@@FETCH_STATUS  --全局变量,查看读取情况
    
    • 1
    • 2

    结果如下:

    注:

    @@FETCH_STATUS返回值共有以下三种,代表了三种状态。

    建议每次执行的时候,添加此步骤,方便进行排错。

    FETCH_STATUS返回值描述
    0FETCH命令执行成功
    1FETCH命令执行失败或数据超过游标数据结果集范围
    2所读取数据不存在

    例子4:

    关闭并释放游标。

    CLOSE test1
    DEALLOCATE test1
    
    • 1
    • 2

    结果如下:

    游标被关闭进行删除操作。

    注意事项:

    游标属于高级应用的一种,但是内存资源耗用较多;

    能不使用游标就不用;

    数据量过大的时候,尽量不用游标;

    游标使用过后,切记关闭删除操作。

    其他补充:

    游标除了上面展示的,还可以对特定数据进行修改操作,也可以与存储过程和WHILE搭配使用,后面有机会的话,白茶会进行补充。


    这里是白茶,一个PowerBI的初学者。

  • 相关阅读:
    PHP7.X 版本新特性摘选
    正则匹配绕过总计之[极客大挑战 2019]RCE ME
    node基础之七:Mongodb 数据库
    一文掌握Python虚拟环境-提升你的开发效率
    栈和队列的练习题
    grafana使用小结
    面试Java高级工程师之应用框架总结
    python的几种数据类型的花样玩法(一)
    Windows11右键添加新建markdown格式文件的几种方法
    【我是学生,可以送我么】搭建树莓派4bJTAG调试平台jlink平替版
  • 原文地址:https://blog.csdn.net/sterln/article/details/126435601