Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 요리
- ORA-01745
- JavaScript
- ORA-00909
- 광주
- 반응형앱
- 디카페인
- Responsively app
- css
- 양동점
- Oracle
- egov
- RefreshableSqlSessionFactoryBean
- 배딩작업
- 은혜침구
- Jsp Pagination
- ORA-01756
- Java
- 문방구과자
- 카페
- mybatis
- 루키초밥
- SVN사용방법
- 맛집
- Eclipse
- docker
- 나주
- 정민이초밥
- AbstractViewe
- ORA-01005
Archives
- Today
- Total
gnusraun
Oracle 패키지(Package) 본문
728x90
:: 패키지를 사용하는 이유
프로시저와 같은 서브 프로그램의 수가 많고 관리가 힘들어져 손쉽게 관리하기 위해 패키지를 사용
:: 패키지 구성
선언부
본문
실행부
:: 선언부
create or replace PACKAGE ex_pkg IS
FUNCTION func_1 (
p_product_id IN NUMBER
) -- 함수
RETURN VARCHAR2;
PROCEDURE proc_1;
PROCEDURE proc_2 (
p_product_id IN NUMBER
);
END ex_pkg;
:: 본문
create or replace PACKAGE BODY ex_pkg IS
-- 패키지 선언부 함수
FUNCTION func_1 (
p_product_id IN NUMBER
) RETURN VARCHAR2 IS
v_product_name VARCHAR(100);
BEGIN
SELECT
product_name
INTO v_product_name
FROM
products
WHERE
product_id = p_product_id;
RETURN nvl(v_product_name, '해당제품없음');
dbms_output.put_line('이름확인' || v_product_name);
-- 예외처리
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(sqlerrm || '에러발생');
END func_1;
-- 패키지 선언부 프로시저1
PROCEDURE proc_1 IS
CURSOR ex_cur IS
SELECT
product_id,
product_name
FROM
products;
BEGIN
FOR i IN ex_cur LOOP
dbms_output.put_line(' 제품ID : ' || i.product_id);
dbms_output.put_line(' 제품명 : ' || i.product_name);
END LOOP;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(sqlerrm || '에러 발생 ');
END proc_1;
-- 패키지 선언부 프로시저2
PROCEDURE proc_2 (
p_product_id IN NUMBER
) IS
CURSOR ex_cur IS
SELECT
product_id,
product_name
FROM
products
WHERE
product_id = p_product_id;
BEGIN
FOR i IN ex_cur LOOP
dbms_output.put_line(' 제품ID : ' || i.product_id);
dbms_output.put_line(' 제품명 : ' || i.product_name);
END LOOP;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(sqlerrm || '에러 발생 ');
END proc_2;
END ex_pkg;
:: 실행부
-- DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용
SET SERVEROUTPUT ON;
-- 패키지 함수 실행
VARIABLE RESULT VARCHAR2;
EXEC :RESULT := EX_PKG.FUNC_1(10);
PRINT :RESULT;
-- 패키지 프로시저1 실행
exec ex_pkg.proc_1;
-- 패키지 프로시저2 실행
exec ex_pkg.proc_2(5);
728x90
'Database > Oracle' 카테고리의 다른 글
Oracle ORA-00909 invalid number of argument (0) | 2023.05.17 |
---|---|
Oracle ORA-00984 column not allowed here (0) | 2023.05.17 |
Oracle ORA-01756 quoted string not properly terminated (0) | 2023.05.16 |
Oracle 명명 규칙 (0) | 2023.05.13 |
Oracle 데이터베이스 만들기 (0) | 2023.05.13 |