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

          注意:每條語(yǔ)句都要有(;)分號(hào)結(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í)行這個(gè)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
              
          [語(yǔ)句段]
            ELSEIF 
          [條件2] THEN
                .
          .
          .
            
          END IF ;


          2.循環(huán)(簡(jiǎn)單循環(huán)/WHILE/FOR)
            單循環(huán):
          LOOP 
            statements
          END LOOP;
          //一直循環(huán)語(yǔ)句段,除非顯示的輸入EXIT / EXIT WHEN 語(yǔ)句結(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)的使用:

          步驟一: 聲明變量來存儲(chǔ)例值 :

          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語(yǔ)句打開游標(biāo),必須放在塊的可執(zhí)行部分中。

            
          OPEN product_cursor ;

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

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

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

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

          .
          IN 參數(shù)的默認(rèn)模式。如果在過程運(yùn)行時(shí)參數(shù)以有一個(gè)值,而且這個(gè)值在過程體中不能修改,
            那么就應(yīng)該指定這種模式。
          .OUT 如果參數(shù)的值只在過程體中設(shè)置,那么就應(yīng)該指定這種模式。
          .
          IN OUT 如果在過程被調(diào)用時(shí)參數(shù)可能已經(jīng)有一個(gè)值,但是這個(gè)值可以在過程體中修改,那
          么就應(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 飛行魚 閱讀(235) 評(píng)論(0)  編輯  收藏 所屬分類: Oracle

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 邵武市| 观塘区| 丁青县| 三河市| 德钦县| 新乡县| 曲靖市| 滕州市| 宝鸡市| 辛集市| 巴林左旗| 新乡县| 耒阳市| 纳雍县| 麦盖提县| 故城县| 日土县| 元谋县| 饶平县| 开封县| 禹城市| 和林格尔县| 江西省| 交口县| 万盛区| 邢台市| 米林县| 台安县| 浦北县| 台东市| 海南省| 民乐县| 赫章县| 商洛市| 曲沃县| 图们市| 小金县| 麟游县| 锦屏县| 渝中区| 鄂州市|