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

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

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

    waterye

    JDBC call Stored Procedure

    現在的ORM(如Hibernate)性能一直不是很理想, 一些大型的J2EE項目還是以JDBC為主, 但一直對SP(Stored Procedure)有抵制情緒, 搞得SQL滿天飛, 因最近幾周用PL/SQL弄歷史數據遷移的問題, 順便整理一下JDBC調用SP.

    The simple SQL statement will always execute faster than calling a stored procedure. Why? Because with the stored procedure, you not only have the time needed to execute the SQL statement but also the time needed to deal with the overhead of the procedure call itself.

    Stored procedures do have their uses. If you have a complex task that requires several SQL statements to complete,
    and you encapsulate those SQL statements into a stored procedure that you then call only once, you'll get better performance than if you executed each SQL statement separately from your program. This performance gain is the result of your program not having to move all the related data back and forth over the network, which is often the slowest part of the data manipulation process. This is how stored procedures are supposed to be used with Oracle -- not as a substitute for SQL, but as a means to perform work where it can be done most efficiently.

    Function and Procedure
    The difference between a procedure and function is that a function returns a value, so it can be used as an evaluated item in an expression. A procedure does not return a value. However, both functions and procedures can have OUT or IN OUT variables that return values.

    CREATE [OR_REPLACE] FUNCTION function_name
     [(parameter_declaration [, parameter_declaration]...)]
    RETURN datatype
     [AUTHID {CURRENT_USER | DEFINER}]
     [PARALLEL_ENABLE] [DETERMINISTIC] {IS | AS}
     ......
    BEGIN statement [statement]...
     [EXCEPTION exception_handler [exception_handler]...]
    END [function_name];

    [CREATE [OR_REPLACE]] PROCEDURE procedure_name
     [(parameter_declaration [, parameter_declaration]...)]
     [AUTHID {CURRENT_USER | DEFINER}] {IS | AS}
     ......
    BEGIN statement [statement]...
     [EXCEPTION exception_handler [exception_handler]...]
    END [procedure_name];

    Package
    A package is a schema object that groups logically related PL/SQL types, variables, and subprograms.
    Packages usually have two parts, a specification and a body; sometimes the body is unnecessary.

    package_spec ::=
    CREATE [OR_REPLACE] PACKAGE [schema_name .] package_name
     [AUTHID {CURRENT_USER | DEFINER}] {IS | AS}
     ......
    END [package_name];

    package_body ::=
    CREATE [OR_REPLACE] PACKAGE_BODY [schema_name .] package_name
     {IS | AS} [PRAGMA SERIALLY_REUSABLE;]
     ......
     [BEGIN statement [statement]...]
    END [package_name];

    IN, OUT, IN OUT
    An IN parameter passes values to the subprogram being called.
    An OUT parameter returns values to the caller of the subprogram.
    An IN OUT parameter passes initial values to the subprogram being called, and returns updated values to the caller.

    JDBC call Stored Procedure

    CallableStatement cstmt = conn.prepareCall("{ ? = call md5( ? ) }");
    // CallableStatement cstmt = conn.prepareCall("begin ? := md5( ? ); end;"); // oracle syntax
    cstmt.registerOutParameter(1, Types.VARCHAR); // set out parameters
    cstmt.setString(2"idea"); // set in parameters
    cstmt.execute();
    String md5Str 
    = cstmt.getString(1); // Getting OUT Parameter Values
    cstmt.close();


    參考:
    1. Java Programming with Oracle JDBC
    2. PL/SQL User's Guide and Reference

    BTW: 有人在項目中使用oracle的Object-Relational SQL嗎? 性能如何? 開發效率?

    posted on 2006-01-13 16:59 waterye 閱讀(5027) 評論(0)  編輯  收藏 所屬分類: Java

    主站蜘蛛池模板: 亚洲AV无码国产精品色午友在线| 国产又黄又爽又猛的免费视频播放| 亚洲日韩欧洲无码av夜夜摸| 免费国产黄网站在线看| 国产免费观看a大片的网站| 亚洲国产精品无码观看久久| 成年女人色毛片免费看| 亚洲中文字幕乱码熟女在线| 处破痛哭A√18成年片免费| 99久久久国产精品免费牛牛| 亚洲精品无码久久久久去q| A毛片毛片看免费| 国产精品久久久久免费a∨| 亚洲国产精品乱码在线观看97| 国产91色综合久久免费| 中文字幕亚洲男人的天堂网络| 成人黄18免费视频| 国产亚洲福利精品一区二区| 亚洲熟女乱综合一区二区| 国产在线观看xxxx免费| 精品日韩亚洲AV无码一区二区三区 | 国产乱子伦精品免费女| 青娱乐在线免费观看视频| 激情97综合亚洲色婷婷五 | 777亚洲精品乱码久久久久久| 6080午夜一级毛片免费看6080夜福利| 亚洲熟妇av一区| 免费激情网站国产高清第一页| 国产成人毛片亚洲精品| 69pao强力打造免费高清| 亚洲色www永久网站| 亚洲国产精品嫩草影院久久| 免费国产叼嘿视频大全网站| 亚洲天堂一区二区三区| 全部免费国产潢色一级| 一个人免费视频观看在线www| 亚洲视频在线观看网站| 国产精品极品美女免费观看| 国产在线精品观看免费观看| 亚洲喷奶水中文字幕电影| 免费女人18毛片a级毛片视频|