亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Oracle數據庫開發必備利器之PL/SQL基礎

難度初級
時長 3小時22分
學習人數
綜合評分9.57
115人評價 查看評價
9.8 內容實用
9.4 簡潔易懂
9.5 邏輯清晰
  • 1、光標的屬性

    %found:光標中是否有數據,有則返回true,無返回false。

    %notfound:與上面相反。

    %isopen:判斷光標是否打開,打開返回true,否則返回false。

    %rowcount:影響的行數,例如光標中有100條記錄,現在這個指針到10行這里,那么它聚會返回10。它不是總行數。

    http://img1.sycdn.imooc.com//5df5e7ce00019f8b13200784.jpg

    2、光標數的限制:默認情況下,oracle數據庫允許在同一會話下,只能打開300個光標(可以查看oracle初始化參數得到這個值)。它的意思是指open?光標之后,打開到一定數量就不可以在打開光標了。

    注意:查詢數據庫參數時,需要使用管理員,這里使用sysdba。show parameter這里是模糊查詢,后面可以接查詢的名,它會自動加%%,如圖。

    http://img1.sycdn.imooc.com//5df5e9850001b20d06400310.jpg

    修改系統參數語法:alter?system?set?參數字段=值。如圖,這里的scope代表范圍,它有三個值。如果scope為memory,那么修改只是更改當前實例,不更改參數文件。如果為spfile,那么修改只是更改參數文件,不更改當前實例(如果是spfile,數據庫需要重新啟動)。both代表前兩個同時更改。


    http://img1.sycdn.imooc.com//5df5eade0001953606270110.jpg

    查看全部
  • 使用PL/SQL完成員工漲工資。

    注意:演示過程中,執行完PL/SQL,查詢卻沒有漲工資,這是因為PL/SQL執行它是一個事物,而查詢是一個事物,PL/SQL執行完需要提交事物,否則查詢就會發生沒有改變。所以一定注意寫完PL/SQL程序后,如果修改了數據庫中的記錄必須要提交事物。這里為了顯示剛才增加的工資所以在上面添加rollback,回滾到修改之前的工資。

    http://img1.sycdn.imooc.com//5df5d66b00011c6508020405.jpg

    http://img1.sycdn.imooc.com//5df5d66300018b5f08460540.jpg

    ——總結——

    1、oracle數據庫默認開啟數據庫事務。

    2、oracle,默認的事物隔離級別是read?commited。

    查看全部
  • 光標:PL/SQL中使用光標代表一個集合(ResultSet)。

    光標語法:如圖,注意:定義光標時,CURSOR是定義光標的關鍵字,變量的名字放在它后面。

    http://img1.sycdn.imooc.com//5df5a12f0001169510820352.jpg

    http://img1.sycdn.imooc.com//5df5a1c70001fe6f09150273.jpg

    使用光標語法:如圖,它的意思相當于執行select語句,得到集合。如圖,從光標中取值并放入變量pename中。如圖,當使用完光標后,還需要關閉,它的意思釋放光標占用系統的一些資源。

    http://img1.sycdn.imooc.com//5df5a2140001257907610337.jpg

    http://img1.sycdn.imooc.com//5df5a2820001734e08790320.jpg

    http://img1.sycdn.imooc.com//5df5a24400011eca08180283.jpg

    fetch的作用:如圖,它有兩點作用。1、當開啟光標的時候,初始化光標后,集合會有一個指針指向集合的第一條記錄地址,fetch的第一個作用就是將該指針指向的記錄返回。2、將指針移動后一條記錄的地址。所以可以通過循環這個光標來返回集合中所有的記錄。

    http://img1.sycdn.imooc.com//5df5a31b0001c07911020604.jpg

    http://img1.sycdn.imooc.com//5df5a35000016ab810770583.jpg

    舉例:通過光標打印所有員工姓名和工資,定義光標規范,盡量把fetch后的變量和光標定義在一塊。這里需要注意into后面字段的順序要和查詢語句的返回字段順序一一對應。

    判斷光標中是否還有數據語法:這里需要了解光標的屬性。

    光標的屬性:總共有四個屬性。1、%found它代表如果fetch取到值,它的值就為true,否則就為false。2、%notfound它代表與第一種相反的意思。

    http://img1.sycdn.imooc.com//5df5a72d0001c68605640539.jpg

    http://img1.sycdn.imooc.com//5df5a742000126b107440395.jpg

    http://img1.sycdn.imooc.com//5df5a75100011a8506350382.jpg


    查看全部
  • PL/SQL光標的引入:如圖,在Java中如果想要循環select查詢結果集合中的每一個數據,可以通過ResultSet,通過對象的next()方法,遍歷集合中每一個數據。光標的作用就是這樣子的。

    http://img1.sycdn.imooc.com//5df5a01f0001468d08550384.jpg

    查看全部
  • PL/SQL循環語句的使用

    第一種循環語句形式:當條件滿足total<=25000時,執行LOOP和END LOOP之間的循環體,不滿足時退出循環。

    http://img1.sycdn.imooc.com//5df58ec900016a3508650413.jpg

    舉例:注意,PL/SQL中沒有++這種自增運算符。

    http://img1.sycdn.imooc.com//5df58fd800011b6906140419.jpg

    http://img1.sycdn.imooc.com//5df58fe90001176c04880281.jpg

    第二種循環語句形式:如果滿足when后面的條件,則跳出循環體。不滿足則執行循環體。

    http://img1.sycdn.imooc.com//5df592790001438b09260497.jpg

    舉例:如圖。

    http://img1.sycdn.imooc.com//5df593700001962e06070500.jpg

    http://img1.sycdn.imooc.com//5df59377000131ed07650405.jpg

    第三種循環語句形式:I是循環變量,IN后面是循環變量的取值,像這里就是從1取到3,其中1..3代表1、2、3三個數字,注意..的使用必須是連續的數字。


    ?http://img1.sycdn.imooc.com//5df58f110001c06f07390373.jpg

    舉例:如圖。

    http://img1.sycdn.imooc.com//5df59544000167d104870378.jpg

    http://img1.sycdn.imooc.com//5df595590001516e08180351.jpg

    推薦使用第二種循環,因為這種方式使用光標比較方便。

    查看全部
  • PL/SQL中if語句的使用(語句序列DML語句)

    第一種IF語句形式,如圖。

    http://img1.sycdn.imooc.com//5df5873a000197f106870380.jpg

    第二種IF語句形式,如圖。

    http://img1.sycdn.imooc.com//5df5875d00015f9208310383.jpg

    第三種IF語句形式,如圖。


    http://img1.sycdn.imooc.com//5df587920001fbed08690450.jpg

    舉例:判斷用戶從鍵盤輸入的數字。1、如何使用if語句。2、如何接受一個鍵盤的輸入(鍵盤輸入的都是字符串)。

    http://img1.sycdn.imooc.com//5df5892b0001103706710513.jpghttp://img1.sycdn.imooc.com//5df5894e0001452605850245.jpg

    查看全部
  • 引用型變量:其中my_name表示變量名,emp表示員工表,ename表示員工名字段,整句代表引用emp表的ename字段類型作為該變量的類型。

    引用型變量優勢:它會隨著參考類型改變而改變。

    http://img1.sycdn.imooc.com//5df490fe000145b207410271.jpg

    舉例:注意在PL/SQL中,賦值有兩種方式,一種是:=,另一種是使用into關鍵字,oracle中的dbms_output包的put_line參數中的連接符||。

    http://img1.sycdn.imooc.com//5df4933b00019f0c05490523.jpg

    記錄型變量:取表中一行變量的類型作為變量的類型,可以理解記錄型變量為數組,數組中的每一個元素就代表這一行的每一列,如果要引用其中某一列,可以通過——》變量名.字段名

    http://img1.sycdn.imooc.com//5df491130001d73708710498.jpg

    舉例:

    http://img1.sycdn.imooc.com//5df4977a0001835306720565.jpg

    查看全部
  • PL/SQL的完整程序結構

    http://img1.sycdn.imooc.com//5df485240001cead10210537.jpg

    變量的定義語法:如圖,需要注意的是變量名稱放在類型前,賦值使用:=。

    http://img1.sycdn.imooc.com//5df486110001d9f209980582.jpg

    舉例:這里可以使用sysdate來獲取當前時間。

    http://img1.sycdn.imooc.com//5df486f30001728103700500.jpg

    查看全部
  • PL/SQL(Procedure Language/SQL):Oracle對sql語言的過程化擴展,指在SQL命令語言中增加了過程處理語句。例如:分支、循環等,使SQL語言具有過程處理能力,PL/SQL是面向過程的語言。

    http://img1.sycdn.imooc.com//5df4839b0001025d08670390.jpg

    如下這種方式,就需要使用PL/SQL來實現。

    http://img1.sycdn.imooc.com//5df483ef0001363810490302.jpg

    http://img1.sycdn.imooc.com//5df484450001df9008420397.jpg

    查看全部
    0 采集 收起 來源:PL/SQL簡介

    2019-12-14

  • 學習PL/SQL作用

    1、對oracle的一個擴展。

    例如:漲工資,可以通過java使用jdbc來操作,這里可以通過調用PL/SQL來操作,它的效率是操作oracle數據庫最高的,相比其他語言。

    2、它是學習存儲過程、自定義函數、觸發器的基礎。

    舉例:簡單的PL/SQL例子,它以declare開頭代表聲明。接下來是說明,它是一個程序,所以它會有變量,光標,例外,這里指對他們的聲明。程序以begin開始,end;結束,中間是程序體。(dbms_output是PL/SQL提供的程序包,這個程序包中提供了很多的方法,其中put_line()它是一個存儲過程,它的作用是接受一個字符串打印在屏幕上)。最后需要/,代表退出編輯環境,并且執行PL/SQL程序。此時還需要一個操作,因為默認oracle的輸出開關是關閉的,通過set serveroutput on打開輸出開關。這里的/代表執行上一條SQL語句或者上一條PL/SQL程序。

    注意:如果程序沒有說明部分那么前面的declare可以不寫。

    http://img1.sycdn.imooc.com//5df47aae0001ffa206630391.jpg

    http://img1.sycdn.imooc.com//5df4788800019afb10800616.jpg

    Oracle中包的位置,可以通過查看文檔了解包的用途。

    http://img1.sycdn.imooc.com//5df47d1f0001f06f11680672.jpg

    http://img1.sycdn.imooc.com//5df47d320001170611920683.jpg

    其中第一個表示Oracle數據庫中提供了哪些程序包,第二個相當于語法手冊,代表怎么使用。

    http://img1.sycdn.imooc.com//5df47d6f0001dcff12070697.jpg

    http://img1.sycdn.imooc.com//5df47da90001f5dd11670670.jpg

    拉到最下方可以看到oracle10g中提供了198個程序包。

    http://img1.sycdn.imooc.com//5df47dce0001507512190696.jpg

    而dbms這個包是第68個可以查看它的overview概述,它還提供了一些examples,還可以查看這個程序包中有哪些子程序,像put_line這個存儲過程,通過它可以了解每一個包的詳細用法。

    http://img1.sycdn.imooc.com//5df47e200001e82311430685.jpg

    http://img1.sycdn.imooc.com//5df47e7400018bf105690440.jpg

    在命令行中直接使用命令(desc?包名)查看包的結構,這種形式查看更為簡潔。


    http://img1.sycdn.imooc.com//5df47efb00010cca11890602.jpg

    put_line它是一個存儲過程,需要一個參數A,并且類型為字符串,并且為輸入參數。

    http://img1.sycdn.imooc.com//5df47f15000114de08060135.jpg


    查看全部

  • set serveroutput on


    declare

    cursor cemp is select empno,sal from emp order by sal;

    pempno emp.empno%type;

    psal? ? ? ? emp.sal%type;

    countEmp number:=0;

    salTotal number;

    begin

    ?select sum(sal) into salTotal from emp;

    open cemp;

    ?loop

    ? exit when salTotal > 50000;

    ? fetch cemp into pempno,psal;

    ? exit when cemp%notfound;

    ? update emp set sal = sal*1.1 where empno =pempno;

    ? countEmp := countEmp +1;

    ? salTotal:=salTotal + psal*0.1;?

    ?end loop;

    close cemp;

    dbms.output.put_line();

    end;

    /


    查看全部
  • set serveroutput on


    declare

    cursor cemp is select to_char(hiredate,'yyyy')? from emp;

    phiredate varchar2(4);

    count80 number := 0;

    count81 number := 0;

    count82 number := 0;

    count87 number := 0;

    begin

    open cemp;

    ?loop

    ?fetch cemp into phiredate;

    ?exit when cemp%notfound;

    ?

    ?if phiredate = '1980' then count80:=count80+1;

    ?elsif phiredate = '1981' then count80:=count81+1;

    ?elsif phiredate = '1982' then count80:=count82+1;

    ?else? count87:=count87+1;

    end if;

    close cemp;


    dbms.output.put_line();

    end;

    /


    查看全部
  • set sereroutput on


    declare

    ? 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();

    ? when others then dbms_output.put_line();

    end;

    /


    查看全部
    0 采集 收起 來源:自定義例外

    2019-12-09

  • 自定義例外

    查看全部
    0 采集 收起 來源:自定義例外

    2019-12-09

  • 修改光標數的限制

    alter system set open_cursor = 400 scope = both;

    memory 只改當前實例

    spfile 改參數文件,需要重啟數據庫

    查看全部

舉報

0/150
提交
取消
課程須知
親,要學習本門課程只需要熟練使用Oracle的SQL語句就可以了,可以參考慕課網的課程《Oracle數據庫開發必備利器之SQL基礎》呦!
老師告訴你能學到什么?
1、能夠熟練掌握PL/SQL的基本語法 2、能夠熟練使用光標和例外 3、能夠熟練使用PL/SQL進行開發

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!