隨筆-0  評論-1  文章-13  trackbacks-0
          1.塊結(jié)構(gòu):
          PL
          /SQL程序被分割為稱為塊(block)的結(jié)構(gòu),塊中包含PL/SQL程序語句。典型的PL/SQL塊具有
          以下的結(jié)構(gòu):
          [DECLARE
              declaration_statements 
          ]
          BEGIN
              executable_statements
          [EXCEPTION
              exception_handling_statements
          ]
          END;
          語法元素:
          declaration_statement : 
            聲明了在塊的其余部分中使用的變量。這些變量是塊的局部變量。
          executable_statment:
            塊的實際可執(zhí)行語句。
          exeception_handling_statement:
            處理可執(zhí)行語句可能發(fā)生的錯誤。

          注意:每條語句都要有(;)分號結(jié)尾,塊使用END關(guān)鍵字結(jié)尾。

          例程:
          DECLARE
              width 
          INTEGER :=2;
              height 
          INTEGER ;
              area 
          INTEGER ;
          BEGIN
              height :
          =3 ;
              area :
          =width*height ;
              DBMS_OUTPUT.PUT_LINE(
          'Area='||area); //表示在屏幕上顯示;
          END;
          /   //表示執(zhí)行這個PL/SQL塊;

          注意:必須在SQL
          *PLUS中提前輸入:SET SERVEROUTPUT ON 才能顯示的輸出。

          2.變量類型:
          變量名   變量類型 ;
          / : = [初始數(shù)值] ;
            id   
          INTEGER ;
          name   
          VARCHAR2(20) :='BinMing';

            
          * proname product.price%TYPE ; // (%TYPE) 表示proname 的類型要和product表中的price的類型一致。

          3.條件邏輯:
          1.IF [條件1] THEN
              
          [語句段]
            ELSEIF 
          [條件2] THEN
                .
          .
          .
            
          END IF ;


          2.循環(huán)(簡單循環(huán)/WHILE/FOR)
            單循環(huán):
          LOOP 
            statements
          END LOOP;
          //一直循環(huán)語句段,除非顯示的輸入EXIT / EXIT WHEN 語句結(jié)束循環(huán)
                
            WHILE循環(huán):
          WHILE condition LOOP
              statements
          END LOOP;

          example:
            
          count:=0;
            
          WHILE counter<6 LOOP 
              
          count :=count + 1 ;
            
          END LOOP ;

          3.FOR循環(huán):
          FOR loop_variable IN [REVERSE] lower_bound..upper_bound LOOP
            statements;
          END LOOP;

          example:
            
          FOR id IN 3..6 LOOP
            DBMS_OUTPUT.PUT_LINE(id);
            
          END LOOP;


          4.游標(biāo)的使用:

          步驟一: 聲明變量來存儲例值 :

          DECLARE
            id products.id
          %TYPE;
            
            

          步驟二: 聲明游標(biāo) :

          游標(biāo)要放在聲明部分中。

          CURSOR product_cursor IS   
            
          Select 
            id,name,price
            
          FROM
            products
            
          ORDER BY
            id;

                  
          //聲明了游標(biāo)的類型或著說方法

          步驟三:打開游標(biāo) :
          使用OPEN語句打開游標(biāo),必須放在塊的可執(zhí)行部分中。

            
          OPEN product_cursor ;

          步驟四: 從游標(biāo)中獲取行:
          使用 
          FETCH 語句讀取游標(biāo)中的行:
            
          FETCH:
            product_cursor;
            
          INTO
            id,name,price;   
          //把值存儲到上面聲明的三個變量中.
          // 如果游標(biāo)返回可能包含很多行的話,就要循環(huán)取出每一行數(shù)據(jù),
            可以使用product_cursor
          %NOTFOUND決定虛幻何時結(jié)束。

          步驟五: 關(guān)閉游標(biāo):
          CLOSE product_cursor;

          5.過程:
              使用PL
          /SQL創(chuàng)建包含一組SQL語句和PL/SQL語句的過程。
              可以使用這些過程將業(yè)務(wù)邏輯集中在數(shù)據(jù)庫中,訪問數(shù)據(jù)
              庫的任何程序都可以使用這些過程。

              使用Create 
          PROCEDURE 語句創(chuàng)建PL/SQL過程:
          Create[OR REPLACE] PROCEDURE procedure_name     //過程名字
          [(parameter_name)[IN|OUT|IN OUT] type[])] //過程使用的參數(shù)
          {
          IS|AS}
          {
            body
          };

          .
          IN 參數(shù)的默認模式。如果在過程運行時參數(shù)以有一個值,而且這個值在過程體中不能修改,
            那么就應(yīng)該指定這種模式。
          .OUT 如果參數(shù)的值只在過程體中設(shè)置,那么就應(yīng)該指定這種模式。
          .
          IN OUT 如果在過程被調(diào)用時參數(shù)可能已經(jīng)有一個值,但是這個值可以在過程體中修改,那
          么就應(yīng)該指定這種模式。


          例子程序:
          Create PROCEDURE update_product_price(

            p_product_id 
          IN products.id%TYPE ;
            p_factor   
          IN NUMBER ;
            
            ) 
          AS

            product_count 
          INTEGER ;

            
          BEGIN 
            
          Select 
            
          COUNT(*)
            
          INTO
            product_count
            
          FROM 
            products
            
          Where
            id 
          = p_product_id;

            
          IF product_count = 1 THEN
            
          Update
                products
            
          SET
                price 
          = price * p_factor ;
            
          COMMIT ;
            
          END IF ;

            
          END update_product_price ;
            
          /
          posted on 2008-06-06 18:50 飛行魚 閱讀(234) 評論(0)  編輯  收藏 所屬分類: Oracle

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 雷州市| 普洱| 东宁县| 武宁县| 阿巴嘎旗| 莫力| 额济纳旗| 麻江县| 辉南县| 宜丰县| 甘洛县| 綦江县| 德阳市| 石城县| 大田县| 二连浩特市| 科技| 奎屯市| 乌什县| 合川市| 桃江县| 颍上县| 吕梁市| 瓮安县| 邳州市| 葵青区| 邹平县| 鸡东县| 定边县| 南昌市| 冷水江市| 玉环县| 雅江县| 本溪| 茌平县| 安阳县| 济南市| 临颍县| 镇坪县| 绥江县| 沐川县|