Oracle數據庫的經常使用對象(三)----PL/SQL 語法、存儲過程

(三)PL/SQL 數據庫

Procedure Language / SQL    存儲過程 函數

命名程序:存儲過程,函數,觸發器 oop

--------------------------------------基礎語法-------------------------------------------- 測試

1. 語句塊: ui

    begin spa

        dbms_output.put_line('HelloWorld'); 對象

    end; 內存

2. 定義變量 字符串

    declare mui

        num number(4);

        name varchar2(10);

    begin

        num := 1001;

        name := 'amui';   -- :=是賦值操做

        dbms_output.put_line(num || ':' || name);        --  ||鏈接字符串,至關於+

    end;

3. if語句

    a) 示例1:

    declare

        age number(2);

    begin

        age := 19;

        if age > 20 then

            dbms_output.put_line('A');

        else

            dbms_output.put_line('B');

        end if;            --要記得end if

    end;

    b) 示例2:    

    

4. case結構

    


5. 循環

    a) loop循環語法實例:

        

    b) while循環語法實例

        

    c) for循環語法實例

        

6. PL語句與SQL語句結合使用

    a) 示例1:插入一條數據:

        其中,在declare定義語句中,v_empno emp.empno%type表示v_empno的類型是參考自數據庫

    中表emp中的屬性empno的類型。

        

    b) 示例2:查詢數據(查詢某個具體值,將其賦給PL中的變量)

        注意與常規SQL語句不同 

            select ename into v_ename from emp where empno = v_empno;

        

    c) 示例3:

        語句 v_emprowData emp%rowtype; 表示變量 v_emprowData 參考自表emp中的一行數據。

        變量v_emprowData 至關於一個對象。

        


        --------------------------------------存儲過程------------------------------------------

        1. 存儲過程定義:(無參存儲過程)

            

        2. 調用存儲過程的方式:

            a) 命令調用:

                exec my_pro1;

            b) 過程調用:

                begin

                    my_pro1;

                end;

            c) 使用Java程序調用:

                {call my_pro1}

        3. 有參存儲過程:

            a) 需求:建立一個存儲過程,根據員工編號返回員工信息。

            在該參數列表中,能夠寫成 v_empno number , 可是number上不能標識長度大小。

            in 表示傳入的參數,out表示傳出參數,即返回值。

            b)調用帶有輸入參數和輸出參數的存儲過程:

            

           不能使用命令調用帶有輸出參數的存儲過程!

        4. 自聯表

            若是輸入輸出參數的類型同樣,能夠簡寫以下:

            


        -----------------------------------------程序包---------------------------------------------

        程序包:用於存儲過程,函數,類型

        1. 定義程序包:

            

        2. 建立包體,包體的名字和包名相同

            

        3.調用包中的存儲過程

            exec mypack1.mypro1;


        ----------------------------------------遊標---------------------------------------------

        遊標:cursor,一個內存區域,不是類型

        1. 需求:建立返回一個表中多條記錄的存儲過程(使用遊標,建立一個參照遊標特性的類型)

            a) 獲取一條數據:

            

            b) 循環獲取多條數據:

            mycursor%found 表示判斷,判斷是不是否存在

            

    2.在程序包中定義參照遊標的類型

        a) 需求:建立一個存儲過程,返回EMP表全部記錄

            1)建立程序包,包中定義類型

            

            2)調用包:參數中須要用到參照遊標特性的類型,須要調用包

                如下示例功能是根據每頁數據數算出最大頁數,同時返回從某一頁的數據。

       3)測試:

             

相關文章
相關標籤/搜索