<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  回復  更多評論
      

    主站蜘蛛池模板: 亚洲国产成人久久三区| 国产成人免费一区二区三区| 国产亚洲AV夜间福利香蕉149 | 浮力影院第一页小视频国产在线观看免费| 亚洲国产精品久久久久久| 亚洲中文字幕无码日韩| 一级女人18片毛片免费视频| 亚洲精品国产福利一二区| 曰韩无码AV片免费播放不卡| 国产成人毛片亚洲精品| a级毛片免费全部播放无码| 亚洲AV无码成人精品区在线观看| 99精品视频在线观看免费播放| 久久久无码精品亚洲日韩按摩 | 日韩免费人妻AV无码专区蜜桃| 久久亚洲精品国产精品黑人| 日韩在线永久免费播放| 亚洲无圣光一区二区| 成人黄动漫画免费网站视频| 美女尿口扒开图片免费| 综合亚洲伊人午夜网| 免费在线中文日本| 亚洲AV无码一区二区三区牛牛| 日本最新免费不卡二区在线| 亚洲精品天堂成人片?V在线播放| 亚洲人成综合网站7777香蕉| 日韩毛片免费在线观看| 一级女性全黄久久生活片免费| 国产亚洲精品a在线观看app| 一级毛片**不卡免费播| 波多野结衣亚洲一级| 吃奶摸下高潮60分钟免费视频| a毛片久久免费观看| 亚洲va在线va天堂va手机| 国产精品成人免费综合| 国产成人无码区免费网站| 亚洲性无码AV中文字幕| 国产成人A亚洲精V品无码| 青娱分类视频精品免费2| 一本久久免费视频| 亚洲AV无码成人专区|