<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    空間站

    北極心空

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks

    創建SQL存儲過程(CREATE PROCEDURE (SQL) statement )

    語法格式如下:

    >>-CREATE PROCEDURE--procedure-name----------------------------->
    >--+----------------------------------------------------+--*---->
       '-(--+------------------------------------------+--)-'
            | .-,------------------------------------. |
            | V .-IN----.                            | |
            '---+-------+--parameter-name--data-type-+-'
                +-OUT---+
                '-INOUT-'

    >--+-------------------------+--*------------------------------->
       '-SPECIFIC--specific-name-'

       .-DYNAMIC RESULT SETS 0--------.     .-MODIFIES SQL DATA-.
    >--+------------------------------+--*--+-------------------+--->
       '-DYNAMIC RESULT SETS--integer-'     +-CONTAINS SQL------+
                                            '-READS SQL DATA----'
          .-NOT DETERMINISTIC-.     .-CALLED ON NULL INPUT-.
    >--*--+-------------------+--*--+----------------------+--*----->
          '-DETERMINISTIC-----'

       .-INHERIT SPECIAL REGISTERS-.     .-7 OLD SAVEPOINT LEVEL-.
    >--+---------------------------+--*--+---------------------+---->
                                         '-7 NEW SAVEPOINT LEVEL-'
          .-LANGUAGE SQL-.     .-7 EXTERNAL ACTION----.
    >--7 *--+--------------+--*--+--------------------+--*------------>
                               '-7 NO EXTERNAL ACTION-'

    >--+------------------------------+--3 *-------------------------->
       '-3 PARAMETER CCSID--+-3 ASCII---+-'
                          '-3 UNICODE-'

    >--| SQL-procedure-body |--------------------------------------><
    SQL-procedure-body:
    |--SQL-procedure-statement--------------------------------------|

    語法說明
    1、procedure-name: 存儲過程的名字,在同一個數據庫的同一模式下,不能存在存儲過程名相同參數數目相同的存儲過程,即使參數的類型不

    同也不行。leizhimin 51cto技術博客

    2、(IN | OUT | INOUT parameter-name data-type,...) :傳入參數
        IN:輸入參數
     OUT:輸出參數
     INOUT:作為輸入輸出參數
     parameter-name:參數名字,在此存儲過程中唯一的標識符。
     data-type:參數類型,可以接收SQL類型和創建的表。不支持LONG VARCHAR, LONG VARGRAPHIC, DATALINK, REFERENCE和用戶自定義類型。


    3、SPECIFIC specific-name:唯一的特定名稱(別名),可以用存儲過程名代替,這個特定名稱用于dorp存儲過程,或者給存儲過程添加注視

      用,但不能調用存儲過程。如果不指定,則數據庫會自動生成一個yymmddhhmmsshhn時間戳的名字。推薦給出別名。

    4、DYNAMIC RESULT SETS integer:指定存儲過程返回結果的最大數量。存儲過程中雖然沒有return語句,但是卻能返回結果集。

    5、CONTAINS SQL, READS SQL DATA, MODIFIES SQL DATA: 指定存儲過程中的SQL訪問級別
        CONTAINS SQL: 表示存儲過程可以執行中,既不可讀取 SQL 數據,也不可修改 SQL 數據。
        READS SQL DATA: 表示存儲過程可以執行中,可讀取SQL,但不可修改 SQL 數據。
        MODIFIES SQL DATA: 表示存儲過程可以執行任何 SQL 語句。可以對數據庫中的數據進行增加、刪除和修改。

    6、DETERMINISTIC or NOT DETERMINISTIC:表示存儲過程是動態或者非動態的。動態的返回的值是不確定的。非動態的存儲過程每次執行返回

    的值是相同的。

    7、CALLED ON NULL INPUT:表示可以調用存儲過程而不管任何的輸入參數是否為NULL,并且,任何的OUT或者INOUT參數可以返回一個NULL或者

    非空值。檢驗參數是否為NULL是在過程中進行的。

    8、INHERIT SPECIAL REGISTERS:表示繼承專用寄存器。

    9、OLD SAVEPOINT LEVEL or NEW SAVEPOINT LEVEL:建立存儲點。OLD SAVEPOINT LEVEL是默認的存儲點。

    10、LANGUAGE SQL:指定程序的主體用的是SQL語言。

    11、EXTERNAL ACTION or NO EXTERNAL ACTION:表示存儲過程是否執行一些改變理數據庫狀態的活動,而不通過數據庫管理器管。默認是

    EXTERNAL ACTION。如果指定為NO EXTERNAL ACTION ,則數據庫會確定最最佳優化方案。

    12、PARAMETER CCSID:指定所有輸出字符串數據的編碼,默認為UNICODE編碼數據庫為PARAMETER CCSID UNICODE

    ,其他的數據庫默認為PARAMETER CCSID 3 ASCII。

    13、SQL-procedure-body:存儲過程的主體

    例子1:產生一個SQL存儲過程,返回員工的平均薪水. 返回所有員工超過平均薪水的數額,結果集包括name, position, and salary字段(參

    考數據庫為db2的示例數據庫sample)。

       CREATE PROCEDURE MEDIAN_RESULT_SET (OUT medianSalary DOUBLE)
         RESULT SETS 1
         LANGUAGE SQL
       BEGIN
         DECLARE v_numRecords INT DEFAULT 1;
         DECLARE v_counter INT DEFAULT 0;
         DECLARE c1 CURSOR FOR
           SELECT CAST(salary AS DOUBLE)
             FROM staff
             ORDER BY salary;
         DECLARE c2 CURSOR WITH RETURN FOR
           SELECT name, job, CAST(salary AS INTEGER)
             FROM staff
             WHERE salary > medianSalary
             ORDER BY salary;
         DECLARE EXIT HANDLER FOR NOT FOUND
           SET medianSalary = 6666;
         SET medianSalary = 0;
         SELECT COUNT(*) INTO v_numRecords
           FROM STAFF;
         OPEN c1;
         WHILE v_counter < (v_numRecords / 2 + 1)
         DO
           FETCH c1 INTO medianSalary;
           SET v_counter = v_counter + 1;
         END WHILE;
         CLOSE c1;
         OPEN c2;
       END

    --------------------
     

    posted on 2007-06-27 13:12 蘆葦 閱讀(1352) 評論(1)  編輯  收藏 所屬分類: 數據庫

    Feedback

    # re: DB2 SQL存儲過程語法官方權威指南(翻譯) 2008-11-26 12:11 3
    這種樣子,基本上沒什么基礎的都看不懂。。  回復  更多評論
      

    主站蜘蛛池模板: 国产成人精品日本亚洲专区 | 亚洲黄色片在线观看| 黄色一级视频免费观看| 午夜毛片不卡高清免费| 亚洲日本在线电影| 日本一道一区二区免费看| 亚洲AV女人18毛片水真多| 免费永久在线观看黄网站| 精品一区二区三区免费毛片| 波多野结衣视频在线免费观看| 免费大片av手机看片| 亚洲国产精品成人AV无码久久综合影院| 国产产在线精品亚洲AAVV| 一本色道久久综合亚洲精品高清| 国产免费MV大全视频网站| 亚洲精品你懂的在线观看| 99久久久国产精品免费蜜臀| 亚洲区视频在线观看| 日韩伦理片电影在线免费观看| 免费无码午夜福利片 | 亚洲乱亚洲乱妇无码| 全免费一级午夜毛片| 九九九精品视频免费| 亚洲精品午夜无码专区| 蜜臀98精品国产免费观看| 亚洲kkk4444在线观看| 免费观看四虎精品国产永久| 中文字幕免费在线看| 色婷婷亚洲十月十月色天| 最新仑乱免费视频| 免费在线人人电影网| 亚洲黄色一级毛片| 免费高清在线爱做视频| 一级一看免费完整版毛片| 亚洲日韩区在线电影| 香蕉视频在线观看免费国产婷婷| 国产成人综合亚洲| 久久噜噜噜久久亚洲va久| 成人毛片18女人毛片免费视频未| 一区二区三区免费高清视频| 亚洲老熟女@TubeumTV|