/*------ 显式游标
游标的属性 返回值类型 意 义
%ROWCOUNT 整型 获得FETCH语句返回的数据行数
%FOUND 布尔型 最近的FETCH语句返回一行数据则为真,否则为假
%NOTFOUND 布尔型 与%FOUND属性返回值相反
%ISOPEN 布尔型 游标已经打开时值为真,否则为假
--------*/
DECLARE
V_ENAME VARCHAR2(10);
CURSOR EMP_CURSOR IS
SELECT ENAME FROM EMP;
BEGIN
OPEN EMP_CURSOR;
IF EMP_CURSOR%ISOPEN THEN
LOOP
FETCH EMP_CURSOR
INTO V_ENAME;
EXIT WHEN EMP_CURSOR%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(TO_CHAR(EMP_CURSOR%ROWCOUNT) || '-' || V_ENAME);
END LOOP;
ELSE
DBMS_OUTPUT.PUT_LINE('用户信息:游标没有打开!');
END IF;
CLOSE EMP_CURSOR;
END;
/*------ 隐式游标
隐式游标的属性?返回值类型???意????义 ??
SQL%ROWCOUNT????整型??代表DML语句成功执行的数据行数 ??
SQL%FOUND???布尔型?值为TRUE代表插入、删除、更新或单行查询操作成功 ??
SQL%NOTFOUND????布尔型?与SQL%FOUND属性返回值相反 ??
SQL%ISOPEN??布尔型?DML执行过程中为真,结束后为假??
--------*/
BEGIN
UPDATE EMP SET SAL = SAL + 100 WHERE EMPNO = 1234;
IF SQL%FOUND THEN
DBMS_OUTPUT.PUT_LINE('成功修改雇员工资!');
COMMIT;
ELSE
DBMS_OUTPUT.PUT_LINE('修改雇员工资失败!');
END IF;
END;