레이블이 패키지인 게시물을 표시합니다. 모든 게시물 표시
레이블이 패키지인 게시물을 표시합니다. 모든 게시물 표시

2021년 12월 31일 금요일

[오라클동영상]오라클 패키지, 프로시저, 함수 실습, Oracle Package, Procedure, Function, refcursor, 참조커서

 [오라클동영상]오라클 패키지, 프로시저, 함수 실습, Oracle Package, Procedure, Function, refcursor, 참조커서






오라클 PL/SQL




패키지, 프로시저, 함수 실습


강의 : 이종철







패키지 명세가 아래와 같다. 패키지 바디를 구현하고 각각 호출하여 테스트 하세요.

(EXCEPTION 절을 이용하여 예외처리)

create or replace package emp_pkg2 as
-- 사번을 받아 사원명을 출력
procedure print_ename( p_empno number );


-- 사번을 받아 관리자 이름을 출력(mgr 칼럼이 관리자ID 임)
procedure print_mname( p_empno number );


-- 부서코드를 입력받아 해당 부서원들의 사번, 이름, 급여추출
function get_emps(p_deptno number) return sys_refcursor;


end emp_pkg2;
/



create or replace package body emp_pkg2 as
procedure print_ename(p_empno number)
is
v_ename emp.ename%type;
begin
select ename into v_ename
from emp
where empno = p_empno;
dbms_output.put_line(v_ename);
exception
when no_data_found then
dbms_output.put_line('no emp...');
when others then
dbms_output.put_line(SQLCODE || SQLERRM);
end;


procedure print_mname(p_empno number)
is
v_mname emp.ename%type;
begin
select e2.ename into v_mname
from emp e1, emp e2
where e1.mgr = e2.empno
and e1.empno = p_empno;
dbms_output.put_line(v_mname);
exception
when no_data_found then
dbms_output.put_line('no emp...');
when others then
dbms_output.put_line(SQLCODE || SQLERRM);
end;


function get_emps(p_deptno number) return sys_refcursor
is
empcursor sys_refcursor;
sqlstr varchar2(2000);
begin
sqlstr := 'select empno, ename, sal from emp where deptno = :1';
open empcursor for sqlstr using p_deptno;
return empcursor;
end;


end emp_pkg2;
/



[패키지 호출 테스트]

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제



#오라클, #자바, #패키지, #프로시저, #오라클함수, #OraclePackage, #OracleProcedure, #ORacleFunction, #오라클교육, #오라클학원, #SQL교육, #SQL학원, #자바교육, #자바학원, 오라클, 자바, 패키지, 프로시저, 오라클함수, OraclePackage, OracleProcedure, ORacleFunction, 오라클교육, 오라클학원, SQL교육, SQL학원, 자바교육, 자바학원




2021년 10월 16일 토요일

오라클 패키지(package), 이론및실습

 

오라클 패키지(package), 이론및실습


패키지란 연관성 있는, 논리적으로 연관된 PL/SQL 타입(Types), 변수(Variable), 서브 프로그램(저장 프로시저, 저장 함수)의 그룹이며 오라클 스키마 오브젝트 입니다. 


패키지 명세(Specification)와 패키지 바디(Body)로 나누어지며 바디는 생략 가능 합니다.

패키지 명세는 CREATE PACKAGE 명령으로, 패키지 바디는 CREATE PACKAGE BODY 명령으로 작성 합니다.


패키지 명세에서 정의한 서브 프로그램 및 변수, 타입만 외부에서 접근, 호출 가능 합니다.

패키지 명세 : 타입, 전역변수, 커서, 예외, PL/SQL 프로그램에 대한 선언

패키지 바디 : 패키지 명세에서 정의한 모든 커서, 서브프로그램을 구현


패키지를 사용하는 장점은 다음과 같습니다.

모듈화 : 연관된 타입, 서브 프로그램들을 PL/SQL 모듈안에 캡슐화.


쉬운 응용프로그램 디자인 : 패키지 명세를 통한 커서, 예외, 함수나 프로시저의 구조를 정의하고 이를 먼저 컴파일하는 것이 가능 합니다.


정보의 숨김 : 패키지를 통해 타입, 서브프로그램 등을 PUBLIC, PRIVATE으로 정의를 할 수 있습니다.


기능 추가의 용이 : 패키지 명세에서 정의한 커서 or 예외, PUBLIC 변수들은 세션동안 유효하므로 이것들을 활용한 새로운 기능의 추가가 용이 합니다.


성능 향상 : 패키지안의 프로시저등이 최초 호출될 때 전체 패키지가 메모리에 로드 되므로 이후 호출 부터는 DISK I/O는 없습니다.


<기본형식>

[패키지 명세]

CREATE [OR REPLACE] PACKAGE package_name IS

   [variable declaration]

   [cursor declaration]

   [exception declaration]

   [procedure declaration]

   [function declaration] 

END;

 

[패키지 바디]

CREATE [OR REPLACE] PACKAGE BODY package_name  IS 

   [variable declaration]

   [cursor implementation]

   [exception implementation]

   [procedure bodies]

   [function bodies] 

END;


장 프로시저를 만들고 호출하는 실습을 해보겠습니다.

15.4.1. 패키지 HelloWorld 실습 : CREATE OR REPLACE PACKAGE


프로시저 하나만 가지는 HELLO라는 이름의  패키지를 생성해 봅시다.


먼저 패키지 명세를 작성하세요.


-- 패키지명세는 패키지를 구성할 요소를 정의 합니다.

CREATE OR REPLACE PACKAGE HELLO

IS

   -- HELLO 패키지는 P_TEST라는 프로시저 하나로 이루어져 있습니다.

   PROCEDURE P_TEST(P_NAME VARCHAR2);

END;


<실행결과>

Procedure P_PRINT_ENAME이(가) 컴파일되었습니다.


패키지 바디를 작성하세요.


-- 패키지 바디를 생성 합니다.

CREATE OR REPLACE PACKAGE BODY HELLO

IS

   -- 패키지 명세에서 정의한 P_TEST 프로시저를 작성합니다.

   PROCEDURE P_TEST(P_NAME VARCHAR2)

   IS

   BEGIN

      DBMS_OUTPUT.PUT_LINE('Hello~ ' || P_NAME);

   END;

END HELLO;


<실행결과>

Package Body HELLO이(가) 컴파일되었습니다.



패키지의 프로시저를 호출해 봅시다..


SET SERVEROUTPUT ON;


-- 패키지내의 프로시저를 호출할 때는 패키지.프로시저 형태로 호출 합니다.

EXEC HELLO.P_TEST('골든래빗');


<실행결과>

Hello~ 골든래빗

 

 

(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...