13、oracle数据库下的游标

ORACLE下的游标操作

游标是sql的一个内存工作区,由系统或者用户以变量的形式定义。游标的作用是用于临时存储从数据库中提取的数据块。游标有静态游标、动态游标之分,静态游标又可分为隐式游标和显式游标。静态游标是在编译时期就决定了结果集的,不能传递参数,而动态游标是可以通过在运行期间传递参数来获取数据结果集的。

游标的属性如下:

隐式游标的属性

SQL%ROWCOUNT(整型)

代表dml语句成功执行的数据行数

SQL%FOUND(布尔值)

判断增删改查操作是否操作成功

SQL%NOTFOUND(布尔值)

判断增删改查操作是否操作成功

SQL%ISOPEN(布尔值)

DML语句在执行过程中为真,结束后为假

 

1.隐式游标

隐式游标是数据库系统自动打开和关闭的,不需要控制,一次只能获取一条数据,例如使用select(查询记录数),update,insert,delete等语句时。隐式游标一般用于根据操作语句对应的游标属性来了解操作的状态和结果,从而达到流程的控制。

接下来介绍一下隐式游标的使用

-- 判断update是否执行成功,成功则提交事务

BEGIN
    UPDATE person SET name='zhangsan'; where id=1
    IF SQL%FOUND THEN
       COMMIT;
       dbms_output.put_line('success');
    ELSE
       dbms_output.put_line('failed');
    END IF
END;
-- 判断影响的行数
DECLARE
    rowCount INT;

BEGIN
    UPDATE person SET name='aaa';
    rowRount:=SQL%ROWCOUNT;

    dbms_output.put_line('rowRount='|| rowRount);
END;

2.显示游标

从数据库中提取多行数据时要放到显式游标中存储。使用显示游标大致分为五步,使用CURSOR定义显示游标如下:

1、定义游标

Cursor cursor_name IS

2、打开游标

OPEN cursor_name

3、操作游标

FETCH cursor_name INTO somVar

4、判断游标是否获取到行值

cursor_name%NOTFOUND;

5、关闭游标

CLOSE cursor_name

看一个具体的实例

将一个表中的数据放到两个数据表中
DECLARE
    t_id int;
    t_name varchar2;
    t_sex char(1);
--定义游标
CURSOR teacher_cur IS SELECT tid,name,sex FROM teacher WHERE tid<=26;
BEGIN
    --打开游标
    OPEN teacher_cur;
    LOOP
    --提取游标
        FETCH teacher_cur INTO t_id, t_name,t_sex;
        --一定要退出循环
        EXIT WHEN NOT teacher_cur%FOUND;
        IF teacher_sex='M' THEN
             一插入数据到表
             COMMIT;
        ELSE
    -- 插入数据到表二
    COMMIT;
END IF;
END LOOP;
IF teacher_cur%ISOPEN THEN
--关闭游标
CLOSE teacher_cur;
END IF
END;

3.动态游标

ref cursor(动态游标)是可以通过在运行期间传递参数来获取数据结果集的,动态游标使用REF CURSOR进行定义。

DECLARE

    --指定动态游标类型
    TYPE cursor_type IS REF CURSOR;
    myCursor cursor_type;--游标类型
    v_sql VARCHAR2(200);
    v_person person%ROWTYPE;
BEGIN
    --定义动态的sql语句
    v_sql:='select * from person where pname LIKE ‘‘%m%’’';
    --打开游标
    OPEN myCursor FOR v_sql;
    LOOP
         --提取游标
         FETCH myCursor INTO v_person;
         --停止循环
         EXIT WHEN myCursor%NOTFOUND;
         dbms_output.put_line (v_person.id);
     END LOOP;
     EXCEPTION
         WHEN OTHERS THEN
         CLOSE myCursor;
     IF myCursor%ISOPEN THEN
         CLOSE myCursor;
END IF;
END;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/321551.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

背包系列

庆功会&#xff08;ssl 2289&#xff09; Description 为了庆贺班级在校运动会上取得第一名的成绩&#xff0c;班主任决定开一场庆功会&#xff0c;为此拔款购买奖品奖励运动员&#xff0c;期望拔款金额能购买最大价值的奖品&#xff0c;可以补充他们的精力和体力。 Input …

使用TFS CI/CD 完成 VSTS 插件自动化部署和发布

Visual Studio Team Service 经过了13年的版本演进和5年的在线运营&#xff0c;现在已经是最成熟的商用DevOps工具链&#xff0c;Marketplace作为VSTS为全球开发者提供各种类型的插件市场&#xff0c;为Visual Studio, Visual Studio Code和Visual Studio Team Service本身提供…

P4248-[AHOI2013]差异【SAM or SA】

正题 题目链接:https://www.luogu.com.cn/problem/P4248 题目大意 TiT_iTi​表示后缀i∼ni\sim ni∼n 一个字符串求 ∑i1n∑jinlen(Ti)len(Tj)−2∗lcp(Ti,Tj)\sum_{i1}^n\sum_{ji}^nlen(T_i)len(T_j)-2*lcp(T_i,T_j)i1∑n​ji∑n​len(Ti​)len(Tj​)−2∗lcp(Ti​,Tj​) 解题…

14、ORACLE下的基本SQL操作

ORACLE下的基本SQL操作 1.获取表字段 select * from user_tab_columns where Table_Name用户表 order by column_name2.获取表注释 select * from user_tab_comments where Table_Name用户表 order by Table_Name3.获取字段注释 select * from user_col_comments where Table_…

暗黑破坏神(ssl 2295)

暗黑破坏神&#xff08;ssl 2295&#xff09; Description 无聊中的小x玩起了Diablo I... 游戏的主人公有n个魔法 每个魔法分为若干个等级&#xff0c;第i个魔法有p[i]个等级(不包括0) 每个魔法的每个等级都有一个效果值&#xff0c;一个j级的i种魔法的效果值为w[i][j] 魔法升…

用C# (.NET Core) 实现迭代器设计模式

本文的概念来自深入浅出设计模式一书项目需求有两个饭店合并了, 它们各自有自己的菜单. 饭店合并之后要保留这两份菜单.这两个菜单是这样的:菜单项MenuItem的代码是这样的:最初我们是这样设计的, 这是第一份菜单:这是第2份菜单:同时有两个菜单存在的问题问题就是多个菜单把事情…

P4287-[SHOI2011]双倍回文【PAM】

正题 题目链接:https://www.luogu.com.cn/problem/P4287 题目大意 长度为nnn的字符串。定义wRw^RwR表示字符串www的翻转。 一个双倍回文可以表示为wwRwwRww^Rww^RwwRwwR且这是个回文串。 求最长的子串是双倍回文。 解题思路 我们在构建PAMPAMPAM的时候维护一个halfhalfhal…

2020-09-18

1.处理调用子组件方法时&#xff0c;报错undefined问题 2.var 、const 、let区别 3. curl -X GET --header "Accept: */*" "访问地址" 4.mysql中的日期格式化 5. ant-design-vue-jeecg

低价购买(洛谷 1108)

低价购买&#xff08;洛谷 1108&#xff09; 题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则。要想被认为是伟大的投资者&#xff0c;你必须遵循以下的问题建议:“低价购买&#xff1b;再低价购买”。每次你购买一支股票,你必须用低于你上次购买它的价格购…

.NET Core/.NET之Stream简介

之前写了一篇C#装饰模式的文章用.NET Core实现装饰模式和.NET Core的Stream简介 提到了.NET Core的Stream, 所以这里尽量把Stream介绍全点. (都是书上的内容).NET Core/.NET的Streams首先需要知道, System.IO命名空间是低级I/O功能的大本营.Stream的结构.NET Core里面的Stream主…

P4762-[CERC2014]Virus synthesis【PAM,dp】

正题 题目链接:https://www.luogu.com.cn/problem/P4762 题目大意 长度为nnn的目标串&#xff0c;开始一个空串&#xff0c;可以执行以下操作 在头或者尾加一个字符复制一个该串的逆串放在后面 求最少操作次数。 解题思路 我们可以知道答案肯定是一个回文串然后剩下的暴力…

I - Trade Gym - 100212I 网络流

网络流好题 给出A、B两个点集&#xff0c;A、B之间有边相连&#xff0c;而A和B的内部均无边相连。 题目要求求出最多删除A、B之间的多少边&#xff0c;才能使得A中点的度数至少都为2&#xff0c;B中点的度数也至少都为2。 先求出每个点的度数&#xff0c;从每个点v出发&…

1、Spring简介

1、Spring是什么&#xff1f; Spring是一套用于开发J2EE应用程序的轻量级框架&#xff0c;其两大核心是IOC和AOP&#xff0c;也就是提供一个bean统一管理容器&#xff0c;提供面向切面编程的基础。 2、为什么要用Spring&#xff1f; 1&#xff09;使用Spring肯定是为了简化开…

【深搜】骑士游历(ssl 1277)

骑士游历 Description 如下图所示有m*n(n,m<15)一个棋盘&#xff0c;在棋盘左下角的A&#xff08;1,1&#xff09;点&#xff0c;有一个中国象棋〈马〉&#xff0c;并约定马走的规则&#xff1a; ①走日字&#xff1b;②只能向右走。 Sample Input &#xff19; &…

P6015-[CSGRound3]游戏【树状数组】

正题 题目链接:https://www.luogu.com.cn/problem/P6015?contestId25945 题目大意 nnn张牌&#xff0c;玩家111从顶拿若干张&#xff0c;之后玩家222拿若干张。 若牌的和大于KKK那么分数为0否则为牌的和。 求KKK为多少时玩家111必胜。 解题思路 我们枚举玩家111拿多少张&a…

修复迁移后Net Standard项目中的错误

接上一章&#xff0c;项目编译结果如下&#xff1a;解决依赖dll引用在Net Framework项目的引用如下&#xff1a;各引用和作用&#xff1a;log4net(1.10.0.0) 用于写框架日志Castle.DynamicProxy(1.1.5.1) 用于代理类生成Micosoft.Practice.EnterpiseLibrary 微软企业库&#xf…

【深搜】骑士游历(二)

骑士游历&#xff08;二&#xff09; 问题描述&#xff1a;设有一个nn的棋盘&#xff08;n≤10&#xff09;&#xff0c;在棋盘上的任意一点A(x,y)有一中国象棋<马>,<马>走的规则同前&#xff0c;但取消<马>只能向右走的条件。试找出一条路径&#xff0c;使…

P3449-[POI2006]PAL-Palindromes【结论题,字符串hash】

正题 题目链接:https://www.luogu.com.cn/problem/P3449 题目大意 nnn个回文串&#xff0c;求有多少对回文串有序拼接可以形成一个新的回文串。 解题思路 结论:当两个回文串的最短循环节相同时两个拼接起来就是一个新的回文串。 这里感性证明一下&#xff1a; 若两个回文串…

迁移Net项目为Net Core\Standard项目

背景&#xff1a;我们公司内部有自己ORM开发框架&#xff0c;最新因为需要将系统迁移到国产服务器上&#xff0c;所以首先需要将最基础的ORM框架改造可以运行在国产服务器上。对于我们Net来说&#xff0c;优选Net Core。在迁移的过程中&#xff0c;将一些经验和坑记录下来&…

2-sat模板- 输出可行解

自己写的代码 using namespace std; const int maxn 1e6; int head[maxn]; int DFN[maxn],LOW[maxn],stk[maxn],visit[maxn],belong[maxn]; vector<int> scc[maxn]; int tot,idx,cnt,sccnum; int n,color[maxn],degree[maxn],pos[maxn]; struct Es{ int v; int next; in…