<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ù)  更多評論
      

    主站蜘蛛池模板: 日韩在线视频播放免费视频完整版| 亚洲精品国产精品乱码不99| 亚洲三级电影网址| 国产免费人成视频在线播放播| 国产免费卡一卡三卡乱码| 亚洲日韩精品无码AV海量| 最近的中文字幕大全免费版| 亚洲一区精品视频在线| 性做久久久久久免费观看| 亚洲精品伊人久久久久| 67194成是人免费无码| 亚洲熟妇无码av另类vr影视| 午夜视频免费观看| 看成年女人免费午夜视频| 亚洲精品tv久久久久久久久久| 日本视频免费观看| 日韩亚洲欧洲在线com91tv| 精品四虎免费观看国产高清午夜 | 亚洲AV成人无码久久WWW| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 国产亚洲精品福利在线无卡一| 久久久精品视频免费观看 | 亚洲熟女www一区二区三区| 成人午夜18免费看| 亚洲经典千人经典日产| 国产精品免费一级在线观看| 亚洲Aⅴ在线无码播放毛片一线天| 全免费A级毛片免费看网站| 亚洲成a人片在线不卡一二三区 | 日本免费在线中文字幕| 久久精品国产亚洲av日韩 | 成人国产网站v片免费观看| 四虎在线免费播放| 亚洲av成人一区二区三区观看在线 | 亚洲精品一区二区三区四区乱码 | 国产美女做a免费视频软件| 一区二区三区免费视频网站 | 亚洲AV无码欧洲AV无码网站| 3d成人免费动漫在线观看| 亚洲看片无码在线视频| 免费看的黄色大片|