<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

    主站蜘蛛池模板: 国产高潮流白浆喷水免费A片 | 亚洲日韩小电影在线观看| 国产偷国产偷亚洲高清在线| 久久精品国产69国产精品亚洲| 亚洲AV中文无码乱人伦| 成人超污免费网站在线看| 97在线免费观看视频| 成年免费a级毛片| 特黄特色大片免费| 亚洲AV无码一区二区乱子仑| 亚洲综合国产成人丁香五月激情| 亚洲国产成人私人影院| 亚洲色图在线观看| 亚洲理论片在线观看| 91精品国产亚洲爽啪在线影院| 国产AV无码专区亚洲A∨毛片| 亚洲免费视频网站| 亚洲色av性色在线观无码| 亚洲国产精品白丝在线观看| 91亚洲视频在线观看| 亚洲五月综合网色九月色| 亚洲AV无码AV吞精久久| 免费人人潮人人爽一区二区| 中文在线观看国语高清免费| 午夜视频免费在线观看| 免费视频成人片在线观看| 在线免费观看a级片| 日韩一卡2卡3卡4卡新区亚洲| 亚洲天堂一区二区| 亚洲精品国产第一综合99久久| 一级成人a免费视频| 亚洲免费综合色在线视频| 青青草原亚洲视频| 亚洲乱理伦片在线观看中字| 一区二区3区免费视频| 丁香花免费完整高清观看| 亚洲婷婷国产精品电影人久久 | 亚洲国产精品无码久久一线| 精品亚洲成a人片在线观看少妇| 亚洲AV无码国产剧情| 免费A级毛片无码视频|