游标是一个独立SQL工作区,有两种性质的游标:
显式游标:是由程序员显式声明的。
隐式游标:
不用明确建立游标变量,分两种:
1. 在PL/SQL中使用DML语言,使用ORACLE提供的名为SQL的隐示游标
2. CURSOR FOR LOOP,用于for loop 语句。
例一:
declare
begin
update departments set department_name=department_name
where 1=2;
dbms_output.put_line(‘update ‘|| sql%rowcount ||’ records’);
end;
/
例二:
declare
begin
for my_dept_rec in ( select department_name, department_id from departments)
loop
dbms_output.put_line(my_dept_rec.department_id || ‘ : ’ || my_dept_rec.department_name);
end loop;
end;
/
游标的属性:
SQL%ROWCOUNT:一个整数值,最近SQL语句影响的行数。当前时刻已经从游标中获取的记录数量。
SQL%FOUND:BOOLEAN属性,如果为TRUE,说明最近的SQL STATEMENT有返回值。
SQL%NOTFOUND:与SQL%FOUND相反
SQL%ISOPEN 在隐式游标中经常是FALSE,因为执行后立即自动关闭了。
如果想得到DML操作的记录数,则可以利用隐式游标属性... ...
大家知道,显示游标有属性,但有时会想不起来隐式游标的属性:SQL%FUND、SQL%NOTFUND、SQL%ROWCOUNT。这三个属性的含义是:是否有记录,没有记录集,总处理的记录数。
下面是一个例子,如何使用隐式游标。
create or replace procedure ptest(v_id number,v_lan in varchar2,v_name in varchar2) is
v_number number;
begin
update test set name=v_name,lastname=v_lan where id=v_id;
v_number:=sql%rowcount;
if v_number=0 then
insert into test(id,name,lastname) values(v_id,v_name,v_lan);
end if;
commit;
end;
上例就是得用隐式游标进行对处理集的判断。
分享到:
相关推荐
下面通过一个简单的示例来演示如何使用隐式游标属性来判断对雇员工资的更新是否成功。 ```sql SET SERVEROUTPUT ON; BEGIN UPDATE emp SET sal = sal + 100 WHERE empno = 1234; IF SQL%FOUND THEN DBMS_OUTPUT....
-- 使用隐式游标属性进行判断 IF SQL%FOUND THEN DBMS_OUTPUT.PUT_LINE('删除了 ' || SQL%ROWCOUNT || ' 条记录!'); ELSE DBMS_OUTPUT.PUT_LINE('班级代码为 ' || v_班级代码 || ' 的记录不存在!'); END IF; ...
隐式游标可以使用名字 SQL 来访问,但要注意,通过 SQL 游标名总是只能访问前一个处理操作或单行 SELECT 操作的游标属性。隐式游标的属性有四种,分别是 SQL %ISOPEN、SQL %FOUND、SQL %NOTFOUND、SQL %ROWCOUNT。...
- **使用隐式游标属性**:可以通过检查这些属性来了解操作的状态和结果。 #### 四、隐式游标属性详解 隐式游标的属性可以用来获取关于SQL语句执行的信息。以下是隐式游标的主要属性及其含义: 1. **SQL%ROWCOUNT*...
- **常用隐式游标属性**: - `sql%rowcount`:返回上一次DML操作影响的记录数。 - `sql%found`:检查是否有满足条件的记录。如果查询返回至少一条记录,该值为TRUE,否则为FALSE。 - **示例**:在示例中,我们...
##### 示例1:使用隐式游标属性判断更新操作是否成功 ```sql SET SERVEROUTPUT ON; BEGIN UPDATE emp SET sal = sal + 100 WHERE empno = 1234; IF SQL%FOUND THEN DBMS_OUTPUT.PUT_LINE('成功修改雇员工资!'...
使用隐式游标属性时,开发者可以根据这些属性来控制程序流程。 在异常处理方面,游标操作可能引发的异常需要通过异常处理语句进行捕获和处理,例如使用EXCEPTION WHEN ... THEN ... END;的结构。异常处理是确保...
在【训练1】中,我们看到了如何使用隐式游标属性检查更新操作是否成功。通过检查SQL%FOUND,我们可以确定UPDATE语句是否找到了匹配的记录并进行了修改。如果SQL%FOUND为TRUE,则表示工资被成功修改;反之,如果为...
**解析**:此段代码演示了如何使用隐式游标属性来判断更新是否成功以及是否有数据被更新。 #### 2. 显式游标结合`LOOP`循环遍历部门名称 ```plsql DECLARE CURSOR dept_cur IS SELECT DISTINCT dname FROM dept; ...
2. 使用隐式游标的属性来判断操作的状态和结果。 3. 根据操作的结果,执行相应的操作,例如 COMMIT 或 ROLLBACK。 在实际应用中,隐式游标非常有用,可以自动地处理多种操作,例如 INSERT、UPDATE 和 DELETE 等。...
隐式游标是所有 DML 语句为隐式游标,可以通过隐式游标属性获取 SQL 语句信息。显示游标是用户显示声明的游标,即指定结果集。当查询返回结果超过一行时,就需要一个显式游标。 REF 游标是动态关联结果集的临时对象...
隐式游标是Oracle在后台自动创建并使用的,用户无需显式声明。当执行DML(数据操纵语言)语句时,Oracle会预定义一个名为`sql`的隐式游标。隐式游标有四个主要属性: 1. `%FOUND`属性:如果DML语句影响了至少一行...
DQL(Select)操作虽然不直接使用隐式游标,但其结果可以通过PL/SQL的内置变量访问,如`sql%found`、`sql%notfound`、`sql%rowcount`等。 - 隐式游标的一些关键属性包括: - `sql%found`:如果DML操作影响了行,则...
3. **游标属性的使用**:演示了如何利用游标的属性来控制程序流程。此示例查询了所有雇员的名字和工资,并展示了如何使用`%isopen`和`%notfound`属性来判断游标状态并控制循环。 ### 总结 游标是Oracle数据库中...
### Oracle游标详解 ...通过合理使用显式游标和隐式游标,开发人员可以轻松地实现复杂的数据处理逻辑。此外,掌握%TYPE、%ROWTYPE以及游标属性等高级特性,将进一步增强应用程序的功能性和灵活性。
+ 隐式游标:所有 DML 语句为隐式游标,通过隐式游标属性可以获取 SQL 语句信息。 + 显式游标:用户显示声明的游标,即指定结果集。当查询返回结果超过一行时,就需要一个显式游标。 * REF 游标:动态关联结果集的...
下面是一个简单的例子,展示了如何使用隐式游标的属性来判断对雇员表中某一条记录的工资更新是否成功。 ```sql DECLARE BEGIN UPDATE emp SET sal = sal + 100 WHERE empno = 1234; IF SQL%FOUND THEN DBMS_...
隐式游标可以使用名字 SQL 来访问,但要注意,通过 SQL 游标名总是只能访问前一个处理操作或单行 SELECT 操作的游标属性。所以通常在刚刚执行完操作之后,立即使用 SQL 游标名来访问属性。 游标的属性有四种,分别...
使用隐式游标的属性可以判断对雇员工资的修改是否成功。例如,可以使用SQL%FOUND属性来判断修改是否成功,并给出相应信息。 显式游标是程序员定义的游标,主要用于多行数据的提取和处理。显式游标的使用分为四个...