C语言学习网

怎么使用PostgreSQL游标

发表于:2022-08-12 作者:安全数据网编辑
编辑最后更新 2022年08月12日,这篇文章主要介绍"怎么使用PostgreSQL游标",在日常操作中,相信很多人在怎么使用PostgreSQL游标问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么使用P

这篇文章主要介绍"怎么使用PostgreSQL游标",在日常操作中,相信很多人在怎么使用PostgreSQL游标问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么使用PostgreSQL游标"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

一、说明

游标字面理解就是游动的光标。

用数据库语言来描述:游标是映射在结果集中一行数据上的位置实体,有了游标用户就可以访问结果集中的任意一行数据了,将游标放置到某行后,即可对该行数据进行操作,例如提取当前行的数据等等。

二、分类

  • 显式游标

    用CURSOR...IS 命令定义的游标,它可以对查询语句(SELECT)返回的多条记录进行处理。

  • 隐式游标

    是在执行插入(INSERT)、删除(DELETE)、修改(UPDATE)和返回单条记录的查询(SELECT)语句时有PL/SQL自动定义的。

三、属性

Oracle 游标有4个属性: %ISOPEN , %FOUND , %NOTFOUND, %ROWCOUNT

  • %ISOPEN 判断游标是否被打开,如果打开%ISOPEN 等于true,否则等于false

  • %FOUND %NOTFOUND 判断游标所在的行是否有效,如果有效,则%FOUNDD等于true,否则等于false

  • %ROWCOUNT 返回当前位置为止游标读取的记录行数。

四、使用

  • 声明游标

    CURSOR emp_info(vartype number) is select * from emp;

  • 打开游标

    open emp_info;

  • 读取游标

    fetch mycur into varno,varprice;

  • 关闭游标

    close emp_info;

五、显示游标遍历

  1. 方法一

    DECLARE    V_EMP_INFO EMP%ROWTYPE;    CURSOR EMP_INFO IS      SELECT * FROM EMP;   --1、声明游标  BEGIN    OPEN EMP_INFO;         --2、打开游标,传递参数值      LOOP      FETCH EMP_INFO INTO V_EMP_INFO;   --3、提取游标fetch into        IF EMP_INFO%FOUND THEN        DBMS_OUTPUT.PUT_LINE(V_EMP_INFO.ENAME || '的雇佣日期是' ||                             V_EMP_INFO.HIREDATE);      ELSE        DBMS_OUTPUT.PUT_LINE('已经处理完结果集了');        EXIT;      END IF;    END LOOP;    CLOSE EMP_INFO;       --4、关闭游标  END;
  2. 方法二

    DECLARE    V_EMP_INFO EMP%ROWTYPE;    CURSOR EMP_INFO IS      SELECT * FROM EMP; --1、声明游标  BEGIN    OPEN EMP_INFO; --2、打开游标,传递参数值      LOOP      FETCH EMP_INFO INTO V_EMP_INFO; --3、提取游标fetch into      EXIT WHEN EMP_INFO%NOTFOUND;      DBMS_OUTPUT.PUT_LINE(V_EMP_INFO.ENAME || '的雇佣日期是' ||                           V_EMP_INFO.HIREDATE);    END LOOP;    DBMS_OUTPUT.PUT_LINE('已经处理完结果集了');    CLOSE EMP_INFO; --4、关闭游标  END;/
  3. 方法三

    DECLARE    V_EMP_INFO EMP%ROWTYPE;    CURSOR EMP_INFO IS      SELECT * FROM EMP; --1、声明游标  BEGIN    FOR V_EMP_INFO IN EMP_INFO LOOP      DBMS_OUTPUT.PUT_LINE(V_EMP_INFO.ENAME || '的雇佣日期是' ||                           V_EMP_INFO.HIREDATE);    END LOOP;    DBMS_OUTPUT.PUT_LINE('已经处理完结果集了');  END;  /

六、隐式游标处理

DECLARE    V_EMP_INFO EMP%ROWTYPE;  BEGIN    SELECT * INTO V_EMP_INFO FROM EMP WHERE ename='SMITH';    IF SQL%FOUND THEN      DBMS_OUTPUT.PUT_LINE(V_EMP_INFO.ENAME || '的雇佣日期是' ||                           V_EMP_INFO.HIREDATE);    END IF;    DBMS_OUTPUT.PUT_LINE('已经处理完结果集了');  END; /

到此,关于"怎么使用PostgreSQL游标"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0