一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

oracle 存儲過程的基本語法

 々心寒々 2010-02-04
1.基本結(jié)構(gòu)
CREATE OR REPLACE PROCEDURE 存儲過程名字
(
    參數(shù)1 IN NUMBER,
    參數(shù)2 IN NUMBER
) IS
變量1 INTEGER :=0;
變量2 DATE;
BEGIN

END 存儲過程名字

2.SELECT INTO STATEMENT
  將select查詢的結(jié)果存入到變量中,可以同時(shí)將多個(gè)列存儲多個(gè)變量中,必須有一條
  記錄,否則拋出異常(如果沒有記錄拋出NO_DATA_FOUND)
  例子:
  BEGIN
  SELECT col1,col2 into 變量1,變量2 FROM typestruct where xxx;
  EXCEPTION
  WHEN NO_DATA_FOUND THEN
      xxxx;
  END;
  ...

3.IF 判斷
  IF V_TEST=1 THEN
    BEGIN
       do something
    END;
  END IF;

4.while 循環(huán)
  WHILE V_TEST=1 LOOP
  BEGIN
 XXXX
  END;
  END LOOP;

5.變量賦值
  V_TEST := 123;

6.用for in 使用cursor

  ...
  IS
  CURSOR cur IS SELECT * FROM xxx;
  BEGIN
 FOR cur_result in cur LOOP
  BEGIN
   V_SUM :=cur_result.列名1+cur_result.列名2
  END;
 END LOOP;
  END;

7.帶參數(shù)的cursor
  CURSOR C_USER(C_ID NUMBER) IS SELECT NAME FROM USER WHERE TYPEID=C_ID;
  OPEN C_USER(變量值);
  LOOP
 FETCH C_USER INTO V_NAME;
 EXIT FETCH C_USER%NOTFOUND;
    do something
  END LOOP;
  CLOSE C_USER;

8.用pl/sql developer debug
  連接數(shù)據(jù)庫后建立一個(gè)Test WINDOW
  在窗口輸入調(diào)用SP的代碼,F9開始debug,CTRL+N單步調(diào)試

關(guān)于oracle存儲過程的若干問題備忘

1.在oracle中,數(shù)據(jù)表別名不能加as,如:
select a.appname from appinfo a;-- 正確
select a.appname from appinfo as a;-- 錯(cuò)誤
 也許,是怕和oracle中的存儲過程中的關(guān)鍵字as沖突的問題吧
2.在存儲過程中,select某一字段時(shí),后面必須緊跟into,如果select整個(gè)記錄,利用游標(biāo)的話就另當(dāng)別論了。
  select af.keynode into kn from APPFOUNDATION af where af.appid=aid and af.foundationid=fid;-- 有into,正確編譯
  select af.keynode from APPFOUNDATION af where af.appid=aid and af.foundationid=fid;-- 沒有into,編譯報(bào)錯(cuò),提示:Compilation 
  Error: PLS-00428: an INTO clause is expected in this SELECT statement

3.在利用select...into...語法時(shí),必須先確保數(shù)據(jù)庫中有該條記錄,否則會報(bào)出"no data found"異常。
   可以在該語法之前,先利用select count(*) from 查看數(shù)據(jù)庫中是否存在該記錄,如果存在,再利用select...into...
4.在存儲過程中,別名不能和字段名稱相同,否則雖然編譯可以通過,但在運(yùn)行階段會報(bào)錯(cuò)
 select keynode into kn from APPFOUNDATION where appid=aid and foundationid=fid;-- 正確運(yùn)行
select af.keynode into kn from APPFOUNDATION af where af.appid=appid and af.foundationid=foundationid;-- 運(yùn)行階段報(bào)錯(cuò),提示
ORA-01422:exact fetch returns more than requested number of rows
5.在存儲過程中,關(guān)于出現(xiàn)null的問題
假設(shè)有一個(gè)表A,定義如下:
create table A(
id 
varchar2(50primary key not null,
vcount 
number(8not null,
bid 
varchar2(50not null -- 外鍵 
);
如果在存儲過程中,使用如下語句:
select sum(vcount) into fcount from A where bid='xxxxxx';
如果A表中不存在bid="xxxxxx"的記錄,則fcount=null(即使fcount定義時(shí)設(shè)置了默認(rèn)值,如:fcount number(8):=0依然無效,fcount還是會變成null),這樣以后使用fcount時(shí)就可能有問題,所以在這里最好先判斷一下:
if fcount is null then
    fcount:
=0;
end 
if;
這樣就一切ok了。
6.Hibernate調(diào)用oracle存儲過程
        this.pnumberManager.getHibernateTemplate().execute(
                
new HibernateCallback() {
                    
public Object doInHibernate(Session session)
                            
throws HibernateException, SQLException {
                        CallableStatement cs 
= session
                                .connection()
                                .prepareCall(
"{call modifyapppnumber_remain(?)}");
                        cs.setString(
1, foundationid);
                        cs.execute();
                        
return null;
                    }

                }
);

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    精品欧美日韩一二三区| 最好看的人妻中文字幕| 高清不卡视频在线观看| 欧美午夜色视频国产精品| 色哟哟国产精品免费视频| 亚洲一区二区福利在线| 小草少妇视频免费看视频| 91精品视频全国免费| 青青草草免费在线视频| 丝袜av一区二区三区四区五区| 欧美日韩视频中文字幕| 欧美整片精品日韩综合| 国产成人亚洲综合色就色| 日韩精品一区二区亚洲| 亚洲国产四季欧美一区| 99热九九热这里只有精品| 99久只有精品免费视频播放 | 日韩一区二区三区观看| 日本高清二区视频久二区| 一区二区三区欧美高清| 精品国产亚洲av成人一区| 色播五月激情五月婷婷| 欧美性猛交内射老熟妇| 国产在线一区二区免费| 亚洲最新中文字幕在线视频 | 国产一级内射麻豆91| 久久精品亚洲欧美日韩| 亚洲欧美日韩网友自拍| 日本av一区二区不卡| 亚洲中文字幕免费人妻| 国产欧美一区二区色综合| 色婷婷日本视频在线观看| 久久精品国产亚洲av麻豆尤物 | 极品少妇嫩草视频在线观看| 91在线爽的少妇嗷嗷叫| 草草草草在线观看视频| 大香蕉网国产在线观看av| 老司机精品视频免费入口| 福利视频一区二区在线| 东京热男人的天堂一二三区 | 欧美日韩一级aa大片|