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

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

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

    隨筆-9  評論-168  文章-266  trackbacks-0
    存儲過程
    注 : 
    (1)在procedure中想用ddl,就必須用execute   immediat 'create table text1(id int not null primary key)';
    且必須顯授權(grant create any table to 用戶名),否則報'insufficient privileges',無權限.
    (2)每條語句都需以';'結尾.
    1.基本語法 : 創(chuàng)建一個存儲過程,如果存在就覆蓋.  (注:as/is沒區(qū)別,只是兼容別的SQL而已)
    create or replace procedure  過程名(參數(shù)1 in number ,參數(shù)2 in number) is
    變量1 integer:=0;
    變量2 date;
    exp   exception;  --定義異常
    begin
        --存儲過程中調(diào)用DDL,必須用動態(tài)SQL方法
        execute  immediate ' create table testtable (testid int not null primary key,testname varchar2(10) ) ';
        execute   immediate   'insert   into   testtable values(1,110) '; 
       raise   exp;    --拋出異常
    exception        --異常處理
        when   exp   then 
        dbms_output.put_line( '執(zhí)行成功1 ');    --控制臺打印
        when   others   then 
        dbms_output.put_line( '執(zhí)行失敗0 '); 
    end;
    2.基本語句:
    (1)變量賦值
    <1>變量初始化賦值:=值;
    <2>變量賦值: select ....into... from ....;     --select ... from ... 方法在存儲過程中時的格式
    select name1,name2 into var1,var2 from table1 
    (2)For 循環(huán)
    For ... in ... LOOP
    --執(zhí)行語句
    end LOOP;
    <1>循環(huán)遍歷游標
    create or replace procedure test() as
        Cursor cursor is select name from student; name varchar(20);
    begin
        for name in cursor LOOP
        begin
            dbms_output.putline(name); 
        end;
        end LOOP;
    end test;
    <2>循環(huán)遍歷數(shù)組
     create or replace procedure test(varArray in myPackage.TestArray) as
    --(輸入?yún)?shù)varArray 是自定義的數(shù)組類型,定義方式見標題6)
    i number;
    begin
    i := 1;  --存儲過程數(shù)組是起始位置是從1開始的,與java、C、C++等語言不同。因為在Oracle中本是沒有數(shù)組
    的概念的,數(shù)組其實就是一張
    --表(Table),每個數(shù)組元素就是表中的一個記錄,所以遍歷數(shù)組時就相當于從表中的第一條記錄開始遍歷
    for i in 1..varArray.count LOOP     
    dbms_output.putline(&apos;The No.&apos;|| i || &apos;record in varArray is:&apos;||varArray(i));   
     end LOOP;
    end test;
    3.代碼拋出異常用raise (異常名);
    4.游標 : 
    (1)系統(tǒng)級游標:cursor SYS_REFCURSOR;只能通過open方法打開和賦值
    OPEN cursor FOR select name1,name2 from table1 where a='1';  --sql語法
    LOOP
        FETCH cursor INTO name1,name2;    --只能通過fetch into 打開和遍歷
        exit when cursor%NOTFOUND;         --可用三個狀態(tài):%NOTFOUND(未找到記錄);%FOUND(找到記
    錄);%ROWCOUNT(當前游標指向的行位置)
         dbms_output.putline(name1||name2);
    END LOOP;
    5.連接運算符 : || ,即'ABC'||'123' : ABC123
    6.單行注釋: --;多行:/**/;
    posted on 2011-06-20 17:12 紫蝶∏飛揚↗ 閱讀(992) 評論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫
    主站蜘蛛池模板: 中文字幕免费在线看线人 | 99久久精品国产亚洲| 国产亚洲一区二区三区在线| 久久九九亚洲精品| 亚洲成a人片在线观看精品| 亚洲妇女熟BBW| 久久国产精品免费一区二区三区| 成人性生交大片免费看中文| 91短视频免费在线观看| 777亚洲精品乱码久久久久久| 亚洲日韩国产欧美一区二区三区 | 亚洲av日韩av欧v在线天堂| 亚洲成AV人片在线观看无| a在线观看免费视频| 亚洲免费视频在线观看| 美女一级毛片免费观看| 黄色片免费在线观看| 在线播放免费人成视频在线观看| 国产91精品一区二区麻豆亚洲| 精品无码一区二区三区亚洲桃色 | 亚洲AV蜜桃永久无码精品| 日本高清不卡中文字幕免费| 1000部国产成人免费视频| 亚洲第一成人在线| 免费a级毛片在线观看| 亚洲免费福利在线视频| 国产成人免费A在线视频| 亚洲一级在线观看| 国产在线一区二区综合免费视频| 久久亚洲AV无码精品色午夜 | 一二三区免费视频| 国产美女无遮挡免费网站| 一级做α爱过程免费视频| 久久精品亚洲中文字幕无码网站| 黄床大片免费30分钟国产精品| 亚洲AV第一页国产精品| 青青操免费在线观看| 国产亚洲精品国看不卡| 婷婷亚洲综合一区二区| 岛国片在线免费观看| 国产精品免费αv视频|