---pl/sql編程語言---pl/sql編程語言是對(duì)sql語言的擴(kuò)展,使得sql語言具有過程化編程的特性。---pl/sql編程語言比一般的過程化編程語言,更加靈活高效。---pl/sql編程語言主要用來編寫存儲(chǔ)過程和存儲(chǔ)函數(shù)等。---聲明方法---賦值操作可以使用:= 也可以使用into查詢語句賦值declare i number(2) := 10; s varchar2(10) := '小明'; ena emp.ename%type;---引用型變量 emprow emp%rowtype;---記錄型變量begin dbms_output.put_line(i); -- 10 dbms_output.put_line(s); -- 小明 select ename into ena from emp where empno = 7788; dbms_output.put_line(ena); -- SCOTT select * into emprow from emp where empno = 7788; dbms_output.put_line(emprow.ename || '的工作為:' || emprow.job); -- SCOTT的工作為:ANALYSTend;
--- pl/sql中的if判斷-- 范例 1:如果從控制臺(tái)輸入 1 則輸出我是 1declare pnum number := #begin if pnum = 1 then dbms_output.put_line('我是1'); end if;end;-- 范例 2:如果從控制臺(tái)輸入 1 則輸出我是 1否則輸出我不是 1declare mynum number := #begin if mynum = 1 then dbms_output.put_line('我是1'); else dbms_output.put_line('我不是1'); end if;end;-- 范例 3:判斷人的不同年齡段 18歲以下是未成年人,18歲以上 40以下是成年人,40以上是老年人declare mynum number := #begin if mynum < 18 then dbms_output.put_line('未成年人'); elsif mynum >= 18 and mynum < 40 then dbms_output.put_line('中年人'); elsif mynum >= 40 then dbms_output.put_line('老年人'); end if;end;
---pl/sql中的loop循環(huán)---用三種方式輸出1到10個(gè)數(shù)字---while循環(huán)declare i number(2) := 1;begin while i<11 loop dbms_output.put_line(i); i := i 1; end loop; end;---exit循環(huán)declare i number(2) := 1;begin loop exit when i>10; dbms_output.put_line(i); i := i 1; end loop;end;---for循環(huán)declarebegin for i in 1..10 loop dbms_output.put_line(i); end loop;end;
游標(biāo) Cursor
語法:
CURSOR 游標(biāo)名 [ (參數(shù)名 數(shù)據(jù)類型,參數(shù)名 數(shù)據(jù)類型,...)] IS SELECT 語句;
例如: cursor c1 is select ename from emp;
游標(biāo)的使用步驟:
打開游標(biāo): open c1; (打開游標(biāo)執(zhí)行查詢)
取一行游標(biāo)的值:fetch c1 into pjob; (取一行到變量中)
關(guān)閉游標(biāo): close c1;(關(guān)閉游標(biāo)釋放資源)
游標(biāo)的結(jié)束方式 exit when c1%notfound
注意: 上面的 pjob 必須與 emp表中的 job 列類型一致:
定義:pjob emp.empjob%type;
---游標(biāo):可以存放多個(gè)對(duì)象,多行記錄。---輸出emp表中所有員工的姓名declare cursor c1 is select * from emp; emprow emp%rowtype;begin open c1; loop fetch c1 into emprow; exit when c1%notfound; dbms_output.put_line(emprow.ename); end loop; close c1;end;-----給指定部門員工漲工資declare cursor c2(eno emp.deptno%type) is select empno from emp where deptno = eno; en emp.empno%type;begin open c2(10); loop fetch c2 into en; exit when c2%notfound; update emp set sal=sal 100 where empno=en; commit; end loop; close c2;end;----查詢10號(hào)部門員工信息select * from emp where deptno = 10;來源:https://www.icode9.com/content-2-637301.html
聯(lián)系客服