<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      oracle 存儲過程的基本語法 及注意事項

      oracle 存儲過程的基本語法


      1.基本結構

      CREATE OR REPLACE PROCEDURE 存儲過程名字
      (
          參數1 IN NUMBER,
          參數2 IN NUMBER
      ) IS
      變量1 INTEGER :=0;
      變量2 DATE;
      BEGIN

      END 存儲過程名字

      2.SELECT INTO STATEMENT
        將select查詢的結果存入到變量中,可以同時將多個列存儲多個變量中,必須有一條
        記錄,否則拋出異常(如果沒有記錄拋出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 循環
        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.帶參數的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
        連接數據庫后建立一個Test WINDOW
        在窗口輸入調用SP的代碼,F9開始debug,CTRL+N單步調試

      關于oracle存儲過程的若干問題備忘

      1.在oracle中,數據表別名不能加as,如:
      select a.appname from appinfo a;-- 正確
      select a.appname from appinfo as a;-- 錯誤
       也許,是怕和oracle中的存儲過程中的關鍵字as沖突的問題吧
      2.在存儲過程中,select某一字段時,后面必須緊跟into,如果select整個記錄,利用游標的話就另當別論了。
        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,編譯報錯,提示:Compilation 
        Error: PLS-00428: an INTO clause is expected in this SELECT statement

      3.在利用select...into...語法時,必須先確保數據庫中有該條記錄,否則會報出"no data found"異常。
         可以在該語法之前,先利用select count(*) from 查看數據庫中是否存在該記錄,如果存在,再利用select...into...
      4.在存儲過程中,別名不能和字段名稱相同,否則雖然編譯可以通過,但在運行階段會報錯
       select keynode into kn from APPFOUNDATION where appid=aid and foundationid=fid;-- 正確運行
      select af.keynode into kn from APPFOUNDATION af where af.appid=appid and af.foundationid=foundationid;-- 運行階段報錯,提示
      ORA-01422:exact fetch returns more than requested number of rows
      5.在存儲過程中,關于出現null的問題
      假設有一個表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定義時設置了默認值,如:fcount number(8):=0依然無效,fcount還是會變成null),這樣以后使用fcount時就可能有問題,所以在這里最好先判斷一下:
      if fcount is null then
          fcount:
      =0;
      end 
      if;
      這樣就一切ok了。
      6.Hibernate調用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;
                          }

                      }
      );

       

      posted @ 2007-07-05 11:08  快樂就好  閱讀(117670)  評論(16)    收藏  舉報
      主站蜘蛛池模板: 四虎影视库国产精品一区| 午夜av高清在线观看| 国产精品久久久久影院色| 日韩精品一区二区蜜臀av| 水蜜桃视频在线观看免费18| 最新中文乱码字字幕在线| 欧美综合自拍亚洲综合图| 亚洲国产成人久久综合区| 在线国产极品尤物你懂的| 一面膜上边一面膜下边视频| 中文字幕日韩一区二区不卡| av在线播放无码线| 91久久久久无码精品露脸| 久久精品国产中文字幕| 激情五月天一区二区三区| 国产中文字幕日韩精品| 天天躁夜夜躁狠狠综合| 中文字幕一区二区久久综合| 日本熟妇色xxxxx| 亚洲中文字幕无码专区| 国产亚洲一区二区三不卡| 91热在线精品国产一区| 免费无码黄十八禁网站| 人妻伦理在线一二三区| 国产精品永久免费成人av| 亚洲精品中文字幕尤物综合| 40岁大乳的熟妇在线观看| 国产一级特黄性生活大片| 色成年激情久久综合国产| 欧美福利电影A在线播放| 天天噜噜日日久久综合网| 中日韩精品视频一区二区三区| 日韩中文字幕人妻精品| 亚洲国产成人精品区综合| 日韩精品人妻系列无码av东京| 美女把尿囗扒开让男人添| 人妻系列中文字幕精品| 亚洲精品区午夜亚洲精品区| 中文字幕国产在线精品| 亚洲熟女乱色综合亚洲图片| 亚洲人成电影在线天堂色|