PL/SQL基础学习(4)

–1、select * into 必须只满足一条记录 没有记录或有多条记录会报异常
–只能取出一条 要取多条要用游标
–2、update和delete语句没有记录或多条记录满足都不会出现异常

3、
–select * into 如果没找到记录会出现异常

--/
DECLARE
v_emp emp%rowtype;
BEGIN
select * into v_emp from emp where empno = 9999;
dbms_output.put_line(v_emp.ename);
EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line('未找到记录');
END;
/

4、
–select * into 如果有多行记录满足也会出现异常

--/
DECLARE
v_emp emp%rowtype;
BEGIN
select * into v_emp from emp where job = 'MANAGER';
dbms_output.put_line(v_emp.ename);
EXCEPTION
WHEN TOO_MANY_ROWS THEN
dbms_output.put_line('超过一行返回');
END;
/

继续阅读PL/SQL基础学习(4)

oracle数据库对象-游标

游标分为隐式游标和显示游标。

一、隐式游标
对于select * into和DML操作(update、delete、insert)都附带有一个隐式游标。

隐式游标的属性

SQL%ROWCOUNT   整型  代表DML语句成功执行的数据行数
SQL%FOUND    布尔型  值为TRUE代表插入、删除、更新或单行查询操作成功
SQL%NOTFOUND 布尔型  与SQL%FOUND属性返回值相反
SQL%ISOPEN   布尔型  DML执行过程中为真,结束后为假


当系统使用一个隐式游标时,可以通过隐式游标的属性来了解操作的状态和结果,进而控制程序的流程。隐式游标可以使用名字SQL来访问,但要注意,通过SQL游标名总是只能访问前一个DML操作或单行SELECT操作的游标属性。所以通常在刚刚执行完操作之后,立即使用SQL游标名来访问属性。

例子:

--/
DECLARE
v_emp emp%rowtype;
BEGIN
delete from emp where empno = 9999;
IF SQL%notfound THEN
  dbms_output.put_line('隐式游标 属性为notfound');
END IF;
dbms_output.put_line('delete无记录不会出现异常');
END;
/


继续阅读oracle数据库对象-游标