2

procedureを使用して、またはfunctionJavaから呼び出しJDBCます。

ベストプラクティスとパフォーマンスの観点から、functionを返すaをSYS_REFCURSOR使用するか、を返すaを使用することをおprocedure勧めしますSYS_REFCURSOR

例えば。

Procedure

create or replace procedure my_proc(p_deptno IN number,p_emp_no IN varchar2
    , p_cursor OUT SYS_REFCURSOR)
    is
    begin
    open p_cursor FOR
    select *
    from emp
    where deptno = p_deptno and emp_number=p_emp_no;
    end proc;
    /


Function

CREATE OR REPLACE FUNCTION my_func (p_deptno IN number,p_emp_no IN varchar2)
   RETURN SYS_REFCURSOR
AS
   p_cursor   SYS_REFCURSOR;
BEGIN
   OPEN p_cursor FOR
      select *
        from emp
        where deptno = p_deptno and emp_number=p_emp_no;
   RETURN p_cursor;
END;
/

上記のどれがより良いオプションですか?誰かがこれについていくつかの洞察を提供できますか?どんな助けでも非常に高く評価されます。

ありがとう

4

1 に答える 1

3

パフォーマンスの観点からは、それは問題ではありません。

一般に、PL / SQLブロックの目的が呼び出し元に何かを返すことである場合、それは関数内にある必要があります。PL / SQLブロックの目的が何か(削除、挿入、更新など)を行うことである場合、それはプロシージャ内にある必要があります。このコードの目的は呼び出し元に何かを返すことなので、関数であることが適切です。

于 2012-06-27T03:57:21.913 に答える