-
更新数据后需要commit;查看全部
-
"/"退出编辑环境查看全部
-
for loop查看全部
-
loop查看全部
-
while查看全部
-
光標的例子2, 給員工漲工資: -------------------------------------------------- --給員工漲工資,總裁1000,經理800,其他400 set serveroutput on declare --定義光標代表給哪些員工漲工資 --alter table "SCOTT"."EMP" rename column "JOB" to empjob cursor cemp is select empno,empjob from emp; pempno emp.empno%type; pjob emp.empjob%type; begin --回退剛才漲的工資(之前沒加commit運行了腳本,避免影響) rollback; --打開光標 open cemp; loop fetch cemp into pempno,pjob; exit when cemp%notfound; --判斷員工的職位 if pjob='PRESIDENT' then update emp set sal=sal+1000 where empno=pempno; elsif pjob='MANAFER' then update emp set sal=sal+800 where empno=pempno; else update emp set sal=sal+400 where empno=pempno; end if; end loop; --關閉光標 close cemp; --對於oracle,默認的事物隔離級別是read committed --事物的ACID(原子性、一致性、隔離性、持久性) commit; dbms_output.put_line('漲工資完成'); end; / -----------------------------------------------查看全部
-
Cursor的第一個實例/例子 --查詢並打印員工的姓名和薪水 /* 光標的屬性: (共有四種, 這裡介紹兩種) 1.%found 2.%notfound */ set serveroutput on declare --定義一個光標 cursor cemp is select ename,sal from emp; --為光標定義對應的變量(引用變量) pename emp.ename%type; psal emp.sal%type; begin --打開光標 open cemp; loop --抓取一條記錄 fetch cemp into pename,psal; exit when cemp%notfound; dbms_output.putline(pename||'的薪水是'||pssal); end loop; --關閉光標 close cemp; end; /查看全部
-
Cursor 裡的 Fetch 的作用查看全部
-
1.光標(游標):就是一個結果集(Result Set) 2.如果你要在PL/SQL中使用集合(一般的變量定義, 是定義不出集合的喔) ---->>> 就要使用光標查看全部
-
Too_many_rows (select....into语句匹配多个行) declare pename emp.ename%type; begin select ename into pename from emp where deptno = 10; exception when too_many_rows then dbms_output.put_line('select into 匹配了多个行'); when others then dbms_output.put_lines('其他异常');查看全部
-
捕获例外 set serveroutput on declare pename emp.ename%type; begin select ename into pename from emp where empno=1234; exception when no_data_found then dbms_output.put_line('没有找到该员工'); when othes then dbms_output.put_line('其他例外'); end; /查看全部
-
带参数的光标 cursor cemp (dno number) is select ename from emp where deptno =dno beigin open cemp(10); loop fetch cemp into pename; exit when cemp%notfound; dbms_output.put_line(); end loop close cemp end查看全部
-
cursor 属性: %found %notfound %isopen %rowcount cursor 使用: corsor demo is select empno,empjob from emp; pempno emp.empno%type; pjob emp.empjob%type; begin --打开光标 open demo; loop fetch demo into pempno,pjob; exit when demo%notfound;-- 比对判断 dbms_output.put_line(''||pjob); end loop; close demo; end; /查看全部
-
--自定义例外:查询50号部门的员工姓名 set serveroutput on declare --定义光标,代表50号部门的员工姓名 cursor cemp is select ename from emp where deptno = 50; pename emp.ename%type; --自定义意外 no_emp_found exception; begin open cemp; fetch cemp into pename; if cemp%notfound then --抛出意外 raise no_emp_found; end if; close cemp; exception when no_emp_found then dbms_output.put_line('XXXX'); when others then dbms_output.put_line('YYYY'); end; /查看全部
-
自定义例外可以当作变量来处理 注意!关闭光标时,应该在抛出异常前,没有正确关闭(因为抛出异常时直接跳转到when语句),但是oracle有一种机制,启动一个进程pmon(process monitor)关闭光标,收拾内存垃圾查看全部
举报
0/150
提交
取消