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

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

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

    oracle procedurce很基礎(chǔ)(轉(zhuǎn)自:http://space.itpub.net/519536/viewspace-571504)

    本文通過一個(gè)最簡(jiǎn)單的oracle存儲(chǔ)過程"proc_helloworld"的實(shí)驗(yàn),展現(xiàn)一下 存儲(chǔ)過程的開發(fā)和維護(hù)過程,適合超超超級(jí)初學(xué)小牛(like me)。

    1.編寫。編寫一個(gè)最最簡(jiǎn)單的存儲(chǔ)過程,給它起個(gè)名字叫做 proc_helloworld
    CREATE OR REPLACE PROCEDURE proc_helloworld
    IS
    BEGIN
       DBMS_OUTPUT.put_line ('Hello World!');
    END;
    /

    2.創(chuàng)建。在sqlplus命令行界面創(chuàng)建該存儲(chǔ)過程
    sys@ora10g> conn sec/sec
    Connected.
    sec@ora10g> CREATE OR REPLACE PROCEDURE proc_helloworld
      2  IS
      3  BEGIN
      4     DBMS_OUTPUT.put_line ('Hello World!');
      5  END;
      6  /

    Procedure created.

    3.運(yùn)行。兩種方法運(yùn)行存儲(chǔ)過程
    1).需要在屏幕上顯示出"DBMS_OUTPUT.put_line"的輸出字符串,需要做一個(gè)小小的設(shè)置
    sec@ora10g> show serveroutput
    serveroutput OFF
    sec@ora10g>set serveroutput on
    sec@ora10g> show serveroutput
    serveroutput ON SIZE 10000 FORMAT WORD_WRAPPED

    2).在sqlplus命令行界面使用"EXECUTE"命令(簡(jiǎn)寫 做"EXEC")執(zhí)行
    sec@ora10g>exec proc_helloworld
    Hello World!

    PL/SQL procedure successfully completed.

    3).在一個(gè)無名PL/SQL塊內(nèi)運(yùn)行存儲(chǔ)過程
    BEGIN
       proc_helloworld;
    END;
    /

    sec@ora10g> BEGIN
      2     proc_helloworld;
      3  END;
      4  /
    Hello World!

    PL/SQL procedure successfully completed.

    4.修改。修改一個(gè)存儲(chǔ)過程只需要將修改好的存儲(chǔ)過程在sqlplus界面先重新執(zhí)行一下即可,因?yàn)樵趧?chuàng)建過 程中使用的是"CREATE OR REPLACE PROCEDURE",也就是說如果沒有就創(chuàng)建,如果已經(jīng)存在了這個(gè)存儲(chǔ)過程,就替換它
    CREATE OR REPLACE PROCEDURE proc_helloworld
    IS
    BEGIN
       DBMS_OUTPUT.put_line ('Hello World! '||chr(10)||'I am a Happy DBA Secooler!');
    END;
    /
    或者
    CREATE OR REPLACE PROCEDURE proc_helloworld
    IS
    BEGIN
       DBMS_OUTPUT.put_line ('Hello World!
    I am a Happy DBA Secooler!');
    END;
    /

    sec@ora10g> CREATE OR REPLACE PROCEDURE proc_helloworld
      2  IS
      3  BEGIN
      4     DBMS_OUTPUT.put_line ('Hello World! '||chr(10)||'I am a Happy DBA Secooler!');
      5  END;
      6  /

    Procedure created.

    看一下執(zhí)行效果:
    sec@ora10g> exec proc_helloworld;
    Hello World!
    I am a Happy DBA Secooler!

    PL/SQL procedure successfully completed.

    5.調(diào)試。對(duì)于非常復(fù)雜的存儲(chǔ)過程的調(diào)試是真正體現(xiàn)個(gè)人魅力和能力的地方,往往需要很多的經(jīng)驗(yàn),這個(gè)急不得, 只能慢慢來 Take it easy.
    在sqlplus下調(diào)試存儲(chǔ)過程時(shí),如果出現(xiàn)錯(cuò)誤,時(shí)刻使用"show errors"命令查看哪里出錯(cuò)了,例如:
    sec@ora10g> CREATE OR REPLACE PROCEDURE proc_helloworld
      2  IS
      3  BEGIN
      4     DBMS_OUTPUT.put_line ('Hello World!');
      5 END
      6  /

    Warning: Procedure created with compilation errors.

    sec@ora10g> show errors
    Errors for PROCEDURE PROC_HELLOWORLD:

    LINE/COL ERROR
    -------- -----------------------------------------------------------------
    5/3      PLS-00103: Encountered the symbol "end-of-file" when expecting
             one of the following:
             ; <an identifier> <a double-quoted delimited-identifier>
             delete exists prior <a single-quoted SQL string>
             The symbol ";" was substituted for "end-of-file" to continue.

    通過提示,問題出現(xiàn)在END后面沒有分號(hào)結(jié)束符號(hào),修改后問題得到處理
    sec@ora10g> CREATE OR REPLACE PROCEDURE proc_helloworld
      2  IS
      3  BEGIN
      4     DBMS_OUTPUT.put_line ('Hello World!');
      5  END;
      6  /

    Procedure created.

    6.刪除。使用drop語句刪除存儲(chǔ)過 程
    sec@ora10g> select object_name,object_type,status from user_objects where OBJECT_TYPE='PROCEDURE';

    OBJECT_NAME                    OBJECT_TYPE         STATUS
    ------------------------------ ------------------- -------
    PROC_HELLOWORLD                PROCEDURE           VALID

    sec@ora10g>DROP PROCEDURE proc_helloworld;

    Procedure dropped.

    sec@ora10g> select object_name,object_type,status from user_objects where OBJECT_TYPE='PROCEDURE';

    no rows selected

    7.獲取。在維護(hù)存儲(chǔ)過程的過程中往往 需要快速的獲取存儲(chǔ)過程的SQL創(chuàng)建語句,我經(jīng)常使用的有如下兩種方法
    1).使用DBMS_METADATA包獲得
    sec@ora10g>SELECT DBMS_METADATA.get_ddl ('PROCEDURE', 'PROC_HELLOWORLD') from dual;

    DBMS_METADATA.GET_DDL('PROCEDURE','PROC_HELLOWORLD')
    --------------------------------------------------------------------------------

      CREATE OR REPLACE PROCEDURE "SEC"."PROC_HELLOWORLD"
    IS
    BEGIN
       DBMS_OUTPUT.put_line ('Hello World!');
    END;

    2).使用"USER_SOURCE" 視圖獲得,本人推薦使用這種方法查看,格式標(biāo)準(zhǔn),內(nèi)容也全面
    sec@ora10g>SELECT text FROM user_source WHERE NAME = 'PROC_HELLOWORLD';

    TEXT
    ------------------------------------------------------------------------------------------------------------------------------
    PROCEDURE proc_helloworld
    IS
    BEGIN
       DBMS_OUTPUT.put_line ('Hello World!');
    END;

    8.小結(jié)
    上面的實(shí)驗(yàn),我通過編寫、創(chuàng)建、運(yùn)行、修改、調(diào)試、刪除和獲取七個(gè)內(nèi)容描述了一個(gè)存儲(chǔ)過程的開發(fā)和維護(hù)過程。
    試驗(yàn),實(shí)驗(yàn)還有實(shí)踐,技術(shù)工作者永遠(yuǎn)不變的途徑!
    Goodluck Friends!

    -- The End --

    posted on 2010-04-16 15:40 duduli 閱讀(1759) 評(píng)論(1)  編輯  收藏 所屬分類: 數(shù)據(jù)庫業(yè)余DBA

    評(píng)論

    # re: oracle procedurce很基礎(chǔ)(轉(zhuǎn)自:http://space.itpub.net/519536/viewspace-571504) 2010-06-17 18:01 53中文網(wǎng)

    來留個(gè)言吧  回復(fù)  更多評(píng)論   

    <2010年4月>
    28293031123
    45678910
    11121314151617
    18192021222324
    2526272829301
    2345678

    導(dǎo)航

    統(tǒng)計(jì)

    公告

    welcome to my place.

    常用鏈接

    留言簿(5)

    我參與的團(tuán)隊(duì)

    隨筆分類

    隨筆檔案

    新聞分類

    石頭JAVA擺地?cái)們?/h3>

    搜索

    •  

    積分與排名

    • 積分 - 256053
    • 排名 - 220

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    @duduli
    主站蜘蛛池模板: 永久黄网站色视频免费直播| 亚洲卡一卡2卡三卡4卡无卡三| 久久99精品视免费看| 福利片免费一区二区三区| 亚洲av日韩av综合| 亚洲人成网www| 国产AⅤ无码专区亚洲AV| 免费精品国产自产拍观看| 女人被免费视频网站| 国产麻豆视频免费观看| 日韩免费人妻AV无码专区蜜桃 | 97在线视频免费| 中文字幕在线免费视频| 曰批全过程免费视频免费看| 亚洲免费网站观看视频| 亚洲熟妇无码久久精品| 亚洲a在线视频视频| 国产亚洲真人做受在线观看| 亚洲日本中文字幕一区二区三区| 国产一区二区三区在线免费观看 | 亚洲免费在线视频播放| 亚洲欧洲日产专区| 亚洲视频一区在线观看| 久久亚洲精品无码VA大香大香| 国产亚洲精品观看91在线| 国产亚洲日韩一区二区三区| 亚洲精品一级无码鲁丝片| 亚洲高清免费视频| 亚洲精品成人在线| 丝袜熟女国偷自产中文字幕亚洲| 亚洲一区二区三区偷拍女厕 | 九九久久精品国产免费看小说| 老司机午夜精品视频在线观看免费 | 亚洲第一se情网站| 春暖花开亚洲性无区一区二区| 国产亚洲Av综合人人澡精品| 免费无码专区毛片高潮喷水| 巨胸喷奶水www永久免费 | 亚洲AV无码精品色午夜果冻不卡| 亚洲AV午夜福利精品一区二区| 蜜芽亚洲av无码精品色午夜|