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

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

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

    空間站

    北極心空

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks

    創(chuàng)建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: 存儲過程的名字,在同一個數(shù)據(jù)庫的同一模式下,不能存在存儲過程名相同參數(shù)數(shù)目相同的存儲過程,即使參數(shù)的類型不

    同也不行。leizhimin 51cto技術(shù)博客

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


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

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

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

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

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

    的值是相同的。

    7、CALLED ON NULL INPUT:表示可以調(diào)用存儲過程而不管任何的輸入?yún)?shù)是否為NULL,并且,任何的OUT或者INOUT參數(shù)可以返回一個NULL或者

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

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

    9、OLD SAVEPOINT LEVEL or NEW SAVEPOINT LEVEL:建立存儲點。OLD SAVEPOINT LEVEL是默認(rèn)的存儲點。

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

    11、EXTERNAL ACTION or NO EXTERNAL ACTION:表示存儲過程是否執(zhí)行一些改變理數(shù)據(jù)庫狀態(tài)的活動,而不通過數(shù)據(jù)庫管理器管。默認(rèn)是

    EXTERNAL ACTION。如果指定為NO EXTERNAL ACTION ,則數(shù)據(jù)庫會確定最最佳優(yōu)化方案。

    12、PARAMETER CCSID:指定所有輸出字符串?dāng)?shù)據(jù)的編碼,默認(rèn)為UNICODE編碼數(shù)據(jù)庫為PARAMETER CCSID UNICODE

    ,其他的數(shù)據(jù)庫默認(rèn)為PARAMETER CCSID 3 ASCII。

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

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

    考數(shù)據(jù)庫為db2的示例數(shù)據(jù)庫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)  編輯  收藏 所屬分類: 數(shù)據(jù)庫

    Feedback

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

    主站蜘蛛池模板: 亚洲乱码日产一区三区| 四虎影视永久免费视频观看| 91在线视频免费看| 在线观看免费精品国产| AV在线亚洲男人的天堂| 久久久久亚洲av无码尤物| 亚洲美女在线观看播放| 亚洲中文字幕无码一去台湾| 国产成人+综合亚洲+天堂| a级毛片免费高清视频| 美女内射无套日韩免费播放| 无人影院手机版在线观看免费| 国产乱色精品成人免费视频 | 全免费A级毛片免费看网站| 免费人成视频在线观看视频| 国产成人A人亚洲精品无码| 亚洲视频中文字幕在线| 亚洲AV无码一区二区三区牲色| 老司机精品免费视频| 免费黄色福利视频| 日日夜夜精品免费视频| 亚洲人成亚洲人成在线观看| 亚洲伊人久久大香线蕉结合| 日韩在线观看视频免费| 182tv免费视视频线路一二三| 日本成人在线免费观看| 久久精品国产99精品国产亚洲性色 | 99免费在线观看视频| 日本v片免费一区二区三区| 亚洲人成精品久久久久| 亚洲中文字幕一二三四区| 国产精品免费视频观看拍拍| 皇色在线视频免费网站| 国产亚洲美女精品久久久2020| 亚洲成年人电影在线观看| 五月天婷婷免费视频| 999久久久免费精品国产| MM131亚洲国产美女久久| 亚洲 欧洲 自拍 另类 校园| 中国人免费观看高清在线观看二区 | 久久狠狠躁免费观看|