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

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

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

    少年阿賓

    那些青春的歲月

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks

    函數調用限制
    1、SQL語句中只能調用存儲函數(服務器端),而不能調用客戶端的函數
    2、SQL只能調用帶有輸入參數,不能帶有輸出,輸入輸出函數
    3、SQL不能使用PL/SQL的特有數據類型(boolean,table,record等)
    4、SQL語句中調用的函數不能包含INSERT,UPDATE和DELETE語句

    1.function函數的語法如下:

          create or replace function function_name (

           argu1 [mode1] datatype1, --定義參數變量

           argu2 [mode2] datatype2 --定義參數變量

       ) return datatype --定義返回的數據類型

      is 

      begin

      end;

    執行 var v1 varchar2(100)
          exec :v1:=function_name

    2.不帶任何參數的定義

    create or replace function get_user 

    return varchar2 

    is 

    Result varchar2(50); --定義變量

    begin 

    select username into Result from user_users; 

    return(Result); --返回值

    end get_user;

    3.帶有in參數的

    create or replace function get_sal(

    empname in varchar2

    ) return number 

    is 

    Result number; 

    begin 

    select sal into Result from emp where ename=empname; 

    return(Result); 

    end;

    執行: SQL> var sal number
    SQL> exec :sal:=get_sal('scott');

    4.帶out參數的

    create or replace function get_info(

    e_name varchar2,

    job out varchar2

    ) return number 

    Is

    Result number; 

    begin 

    select sal,job into Result,job from emp where ename=e_name;
    return(Result);
    end;

    執行: SQL> var job varchar2(20)
    SQL> var dname varchar2(20)
    SQL> exec :dname:=get_info('SCOTT',:job)

    5.帶in out參數的

    6.函數調用舉例

    create or replace function f_sys_getseqid(
        v_seqname           IN VARCHAR2,
        v_provincecode      IN VARCHAR2    --省編碼
    ) return Varchar2
    IS
        iv_date             VARCHAR2(8);
        iv_seqname          VARCHAR2(50);
        iv_sqlstr           VARCHAR2(200);
        iv_seq              VARCHAR2(8);
        iv_seqid            VARCHAR2(16);
    BEGIN
        iv_seqname := LOWER(TRIM(v_seqname));
        iv_sqlstr := 'SELECT '||iv_seqname||'.nextval FROM DUAL';
        EXECUTE IMMEDIATE iv_sqlstr INTO iv_seq;--執行動態的sql語句,執行相似的一組語句
        IF v_seqname = 'SEQ_FUNCROLE_ID' THEN
          iv_seqid:= 'ESS' || LPAD(iv_seq,5,'0');
        ELSE
          SELECT substrb(v_provincecode,1,2)||TO_CHAR(SYSDATE,'yymmdd') INTO iv_date FROM DUAL;
          iv_seqid:= iv_date || LPAD(iv_seq,8,'0');
        END IF;
        RETURN iv_seqid;
    EXCEPTION
        WHEN OTHERS THEN
        RETURN NULL;
    END;

      調用方式如下:

        SELECT TO_NUMBER(F_SYS_GETSEQID('SEQ_TERMTRADE_ID', V_PROVINCE_CODE)) INTO V_BATCH_ID FROM DUAL;

       EXECUTE IMMEDIATE的說明:執行動態的sql語句。

    posted on 2012-08-12 20:42 abin 閱讀(33341) 評論(2)  編輯  收藏 所屬分類: oracle

    Feedback

    # re: oracle function用法 2015-06-08 11:04 工單
    版本  回復  更多評論
      

    # re: oracle function用法 2016-06-21 09:49 hh7
    check  回復  更多評論
      

    主站蜘蛛池模板: 污污视频网站免费观看| 亚洲一卡一卡二新区无人区| 无忧传媒视频免费观看入口| 国产男女猛烈无遮档免费视频网站| 亚洲欧美日韩综合久久久| 毛片高清视频在线看免费观看| 亚洲日韩精品无码专区加勒比☆| 成人黄18免费视频| WWW亚洲色大成网络.COM| 国产免费怕怕免费视频观看| 免费国产a理论片| 亚洲精品美女久久久久99| 波多野结衣免费一区视频 | 国产免费小视频在线观看| 亚洲国产成人AV网站| 伊在人亚洲香蕉精品区麻豆| 农村寡妇一级毛片免费看视频| 4338×亚洲全国最大色成网站| 99在线视频免费观看| 久久久亚洲欧洲日产国码aⅴ| 久久受www免费人成_看片中文| 亚洲av无码一区二区三区人妖| 亚洲精品成人区在线观看| 永久免费av无码入口国语片| 亚洲欧洲日产国码av系列天堂| 24小时免费看片| 在线观看亚洲免费| 亚洲精品乱码久久久久久久久久久久 | 亚洲av中文无码字幕色不卡| 亚洲精品网站在线观看不卡无广告| a级毛片免费全部播放| 亚洲精品视频免费看| 国产精品四虎在线观看免费 | 午夜视频在线在免费| 国产精品成人啪精品视频免费| 亚洲综合精品香蕉久久网97| 巨胸喷奶水视频www网免费| 精品久久久久久无码免费| 亚洲精品中文字幕无码AV| 日本特黄特色免费大片| 今天免费中文字幕视频|