postgresql/lightdb中WHERE CURRENT OF的使用

最近看PG源码,在语法分析中有看到CURRENT OF元素。在PG游标中,WHERE CURRENT OF可以用来使用游标更新或删除当前指向的行。

语法:UPDATE table SET ... WHERE CURRENT OF cursor; 语法:DELETE FROM table WHERE CURRENT OF cursor;

实例:

复制代码
select * from tf1;
 c1 |  c2  |   c3   |    c4    |  c5   
----+------+--------+----------+-------
  1 | 1000 | China  | Dalian   | 23000
  2 | 4000 | Janpan | Tokio    | 45000
  3 | 1500 | China  | Xian     | 25000
  4 |  300 | China  | Changsha | 24000
  5 |  400 | USA    | New York | 35000
  6 | 5000 | USA    | Bostom   | 15000


CREATE  OR REPLACE FUNCTION tfun3() RETURNS int AS $$
DECLARE
    curs1 refcursor;
    y tf1%ROWTYPE;
BEGIN
    open curs1 FOR SELECT * FROM tf1;
    fetch last from curs1 into y; 
    RAISE NOTICE 'curs1 : %', y.c2;
    
    delete from tf1 WHERE CURRENT OF curs1;
    return 0;
END;
$$ LANGUAGE plpgsql;

select tfun3();
select * from tf1;
 c1 |  c2  |   c3   |    c4    |  c5   
----+------+--------+----------+-------
  1 | 1000 | China  | Dalian   | 23000
  2 | 4000 | Janpan | Tokio    | 45000
  3 | 1500 | China  | Xian     | 25000
  4 |  300 | China  | Changsha | 24000
  5 |  400 | USA    | New York | 35000
复制代码

这样,最后一行就被删除。

posted @   zhjh256  阅读(140)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2017-01-24 WARN: Establishing SSL connection without server's identity verification is not recommended
2017-01-24 maven parent工程.pom修改后未自动更新
2017-01-24 c++性能之对象与指针性能比较、以及java与c++性能对比实测
2017-01-24 c++性能之map实现性能比较
2017-01-24 MQ内存消耗与积压分析
2017-01-24 c++获取时间戳
2017-01-24 c++学习之map基本操作
点击右上角即可分享
微信分享提示