Oracle---显式游标】的更多相关文章

在PL/SQL块中执行SELECT.INSERT.DELETE和UPDATE语句时,Oracle会在内存中为其分配上下文区(Context Area),即缓冲区.游标是指向该区的一个指针,或是命名一个工作区(Work Area),或是一种结构化数据类型. 在每个用户会话中,可以同时打开多个游标,其数量由数据库初始化参数文件中的OPEN_CURSORS参数定义. 对于不同的SQL语句,游标的使用情况不同: SQL语句 游标 非查询语句 隐式的 结果是单行的查询语句 隐式的或显示的 结果是多行的查询…
1)查询返回单行记录时→隐式游标: 2)查询返回多行记录并逐行进行处理时→显式游标 显式游标例子: DECLARE CURSOR CUR_EMP IS SELECT * FROM EMP; ROW_EMP CUR_EMP%ROWTYPE; BEGIN OPEN CUR_EMP; FETCH CUR_EMP INTO ROW_EMP; WHILE CUR_EMP%FOUND LOOP DBMS_OUTPUT.PUT_LINE(ROW_EMP.EMPNO || '----' || ROW_EMP.E…
cursor --------需要用户先定义,在select时,可以用于处理多行记录 1.declare  声明一个游标 2.open cursor (隐式游标自动open) 3.fetch cursor 读取记录到变量(在select时,可以通过循环的方式读取多行记录) 4.判断游标是否为空(到达最后一行记录) 5.close cusor 关闭游标 %isopen  判断游标是否open %found    判断游标是否为非空 %notfound  判断游标是否为空 %rowcount   在…
显式游标的处理过程包括: 声明游标,打开游标,检索游标,关闭游标. 声明游标 CURSOR c_cursor_name IS statement; 游标相当于一个查询结果集,将查询的结果放在游标里,方便在块里进行处理. 记录 一个记录就是一个复合的数据结构,相当于结果集里的一行数据,用于遍历游标时存放结果.记录支持三种定义:基于表,基于游标,自定义. 如果是基于表或游标,其定义格式为: record_name table_name or cursor_name%ROWTYPE; 打开游标 OPE…
一.游标的相关概念及特性 1.定义 通过游标方式定位到结果集中某个特定的行,然后根据业务需求对该行进行相应特定的操作. 2.分类 显示游标: 用户自定义游标,用于处理select语句返回的多行数据. 隐式游标: 系统自动定义的游标,记录集只有单行数据,用于处理select into 和DML语句. 3.游标使用的一般过程: 显示游标:声明, 打开, 读取, 关闭. 隐式游标:直接使用,读取,声明.打开.关闭都是系统自动进行的. 4.显示游标的过程描述 a.声明游标    CURSOR curso…
--隐式游标 注意变量赋值用(:=) 连接符用(||)而不是加号(+) DECLARE v_pk T_PLAT_KEYWORD.ID%TYPE; --主键 v_amount_message T_PLAT_KEYWORD_STATISTIC.AMOUNT%TYPE; v_amount_talk T_PLAT_KEYWORD_STATISTIC.AMOUNT%TYPE; CURSOR CUR IS SELECT DISTINCT B.NAME,B.TYPE,B.WEIXIN_PK FROM T_PL…
declare v_empno scott.emp.empno%type; v_sal scott.emp.sal%type; cursor cur_emp is select t.empno, t.sal from scott.emp t; begin open cur_emp; loop fetch cur_emp into v_empno, v_sal; exit when cur_emp%notfound; dbms_output.put_line(v_empno || ' ' || v…
同一数据库 两个不同用户 user1 user2 user1里面有一张表 table1 在user2里面创建synonymcreate synonym sy1 for user1.table1; 创建好之后,直接访问是可以的. select * from sy1; 是可以取到数据的. 但是放到一个存储过程里 create procedure "proc_test" is     cursor  cur_test is        select * from sy1 where row…
使用隐式的游标,将会执行两次操作. 第一次检索记录, 第二次检查TOO MANY ROWS 这个exception . 而显式游标不执行第二次操作.…
--指向表行的指针,一次一行,一般向前移动 Resultset --游标永远代代表的是一行数据. /* 使用步骤 第一步:声明游标,就像是声明一个变量样. 游标的关键字就是cursor. Declare --游标关键字在前面 Cursor myCusor is select * from someTable; Begin //代码 End; 第二步:声明游标后并不能直接使用-打开游标 Declare --游标关键字在前面 Cursor myCusor is select * from someT…