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

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

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

    少年阿賓

    那些青春的歲月

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks

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

    1.function函數(shù)的語法如下:

          create or replace function function_name (

           argu1 [mode1] datatype1, --定義參數(shù)變量

           argu2 [mode2] datatype2 --定義參數(shù)變量

       ) return datatype --定義返回的數(shù)據(jù)類型

      is 

      begin

      end;

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

    2.不帶任何參數(shù)的定義

    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參數(shù)的

    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;

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

    4.帶out參數(shù)的

    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;

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

    5.帶in out參數(shù)的

    6.函數(shù)調(diào)用舉例

    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;--執(zhí)行動態(tài)的sql語句,執(zhí)行相似的一組語句
        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;

      調(diào)用方式如下:

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

       EXECUTE IMMEDIATE的說明:執(zhí)行動態(tài)的sql語句。

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

    Feedback

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

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

    主站蜘蛛池模板: 在线综合亚洲中文精品| 皇色在线视频免费网站| 亚洲精品国产摄像头| 亚洲福利在线观看| 亚洲美女在线国产| 日韩在线a视频免费播放| 亚洲毛片免费观看| 国产一区二区三区免费| 国产成人无码精品久久久久免费 | 亚洲欧洲精品成人久久曰| 亚洲成年人在线观看| 久久亚洲国产成人精品无码区| 拔擦拔擦8x华人免费久久| 最近免费中文字幕大全| 日韩视频在线精品视频免费观看| 一级成人a毛片免费播放| 中文字幕一区二区免费| 中文字幕永久免费视频| 人妻仑乱A级毛片免费看| 九九精品国产亚洲AV日韩| 亚洲精品乱码久久久久久蜜桃图片| 亚洲人成高清在线播放| 亚洲欧洲精品一区二区三区| 亚洲国产香蕉碰碰人人| 亚洲av无码乱码国产精品fc2| 亚洲综合AV在线在线播放| 亚洲免费无码在线| 亚洲熟伦熟女新五十路熟妇| 亚洲国产V高清在线观看| 免费在线不卡视频| 亚洲色图综合在线| 国产日产亚洲系列| 亚洲精品tv久久久久久久久| 国产V亚洲V天堂无码| 无码欧精品亚洲日韩一区| 亚洲免费精彩视频在线观看| 亚洲天堂中文资源| 亚洲欧洲综合在线| 亚洲最大中文字幕无码网站| 亚洲乱亚洲乱妇无码| 国产精品成人亚洲|