2021년 12월 25일 토요일

오라클 참조커서, RefCursor, 자바JDBC에서 오라클함수리턴값받기, SQL교육, SQL학원, 오라클교육, 오라클학원, 자바교육, 자바학원,JAVA학원

 

오라클 참조커서, RefCursor, 자바JDBC에서 오라클함수리턴값받기, SQL교육, SQL학원, 오라클교육, 오라클학원, 자바교육, 자바학원,JAVA학원


http://ojc.asia/bbs/board.php?bo_table=LecSQLnPlSql&wr_id=712 


오라클 참조커서, RefCursor, 자바JDBC에서 오라클함수리턴값받기, SQL교육, SQL학원, 오라클교육, 오

오라클 참조커서, RefCursor, 자바JDBC에서 오라클함수리턴값받기, SQL교육, SQL학원, 오라클교육, 오라클학원, 자바교육, 자바학원오라클 PL/SQL참조커서(Ref Cursor)참조커서로 SELECT결과를 클라이언트로

ojc.asia

https://www.youtube.com/watch?v=rIf50lhW1IY&list=PLxU-iZCqT52CfP98Y4gCDKIm52tKvgy36&index=19 

https://www.youtube.com/watch?v=udiEwV0Q1Mg&list=PLxU-iZCqT52CfP98Y4gCDKIm52tKvgy36&index=18 

https://www.youtube.com/watch?v=HKy8Nk6nwQ0&list=PLxU-iZCqT52CfP98Y4gCDKIm52tKvgy36&index=17 

https://www.youtube.com/watch?v=8hc030THr8w&list=PLxU-iZCqT52CfP98Y4gCDKIm52tKvgy36&index=16 


오라클 PL/SQL



참조커서(Ref Cursor)

참조커서로 SELECT결과를 클라이언트로 리턴

자바JDBC에서 Ref Cursor로 리턴받기




참조커서(REF CURSOR)


  • 일반 커서는 정적이며 커서가 한번 SQL 영역을 가리키면 가리키는 곳을 변경 못한다. 하지만  참조커서(REF CURSOR)는 가능하다.



Declare
   Type refcur is ref cursor;
   cursor c is select * from dual;
   myCur refCur;
begin
  --myCur는 ref cursor
if (to_char(sysdate,'DY') = '일') then
    open myCur for select * from emp;
elsif (to_char(sysdate,'DY') != '일') then
    open myCur for select * from dept;
end if;
open c;  -- 일반커서
end;
/

  • 일반 커서가 가리키는 데이터는 함수나 프로시저를 호출한 곳으로 보낼 수 없지만 참조커서(REF CURSOR)가 가리키는 데이터는 가능하다.



-- 커서를 리턴할 수 있는 함수를 만든다. 

CREATE OR REPLACE FUNCTION emptest(v_deptno in number) RETURN SYS_REFCURSOR    AS

       test_cursor SYS_REFCURSOR;

       sql_string Varchar2(500);

BEGIN

       sql_string := 'Select empno, ename, sal from Emp where deptno = :deptno' ;

       Open test_cursor FOR sql_string USING v_deptno;

       RETURN test_cursor;

       CLOSE test_Cursor;

  END;

  /


variable a refcursor ;

exec :a := emptest(20) ;

print a;



EMPNO ENAME             SAL

---------- ---------- ----------

      7566 JONES            2975

      7788 SCOTT            3000

      7876 ADAMS            1100

      7902 FORD             3000


-- JAVA/JSP등에서 확인


                Class.forName(driver_name); //jdbc 드라이버연결

                conn =  DriverManager.getConnection(url,user,pwd); //Connection인수 입력

               

                String proc_call = "{? = call emptest(?)}";

             

                // 오라클 함수 또는 프로시저를 호출하기 위해 callable statement를 이용

                CallableStatement cstmt = conn.prepareCall(proc_call);

 

                // key here is to register the output parameter

                // of type cursor, execute, then cast it as a ResultSet.

                -- emptest 함수의 output 파라미터 타입을 CURSOR로 한다.

                -- 첫번째  ?가 출력파라미터, 두번째 파리미터는 입력파라미터

                cstmt.registerOutParameter(1, OracleTypes.CURSOR);

                cstmt.setInt(2, 10);  //10번 부서의 데이터 얻기 위해

                cstmt.executeQuery();


                rs = (ResultSet)cstmt.getObject(1);

                while(rs.next()) {

                        out.println(rs.getString("ename") + "<br>");

                        ……

                }



#참조커서, #오라클참조커서, #RefCursor, #오라클커서, #커서란, #SQL교육, #SQL학원, #오라클학원, #오라클교육, #자바교육, #자바학원, #오라클동영상, 참조커서, 오라클참조커서, RefCursor, 오라클커서, 커서란, SQL교육, SQL학원, 오라클학원, 오라클교육, 자바교육, 자바학원, 오라클동영상, 
 

댓글 없음:

댓글 쓰기

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...