[ORACLE]USSOFT ORACLEトレーニング4日目
4877 ワード
📌 PACKAGE
🤔 セットメニューは何ですか。
🤨 使用理由
プログラミングの過程で、プログラムのようなサブプログラムの数が幾何級数で増加し、このようなプロジェクトは管理しにくくなり、自分の必要なプロジェクトを見つけることが難しくなります.このような事態を防止するために、PACKAGEの概念は、様々なプロジェクトを容易に管理するためである.
😶 パッケージの使用方法
パッケージは、宣言、本文、および実行セクションから構成されます.
💡 宣言簿
CREATE OR REPLACE PACKAGE EX_PKG IS -- 패키지 선언
FUNCTION FUNC_1(P_PRODUCT_ID IN NUMBER) -- 패키지로 묶을 함수
RETURN VARCHAR2;
PROCEDURE PROC_1; -- 패키지로 묶을 프로시저1
PROCEDURE PROC_2(P_PRODUCT_ID IN NUMBER); -- 패키지로 묶을 프로시저2
END EX_PKG; -- 패키지 종료
💡 本文
CREATE OR REPLACE PACKAGE BODY EX_PKG IS -- 패키지 본문
--- 패키지 선언부 함수1 ---
FUNCTION FUNC_1(P_PRODUCT_ID IN NUMBER)
RETURN VARCHAR2
IS
V_PRODUCT_NAME VARCHAR2(100);
BEGIN
SELECT
PRODUCT_NAME
FROM PRODUCTS
WHERE
PRODUCT_ID = P_PRODUCT_ID;
RETURN NVL(PRODUCT_NAME, '존재하지 않는 제품');
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 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; -- 패키지 종료
💡 執行部
-- DMBS_OUTPUT.PUT_LINE을 출력하기 위해 사용
SET SERVEROUTPUT ON;
--- 패키지 실행
EXEC EX_PKG.FUNC_1(10);
EXEC EX_PKG.PROC_1;
EXEC EX_PKG.PROC_2(10);
📌 TRIGGER
🤔 トリガとは?
💡 トリガ文
トリガ・イベントがトリガが設定されたテーブルで発生した場合、多くのローを変更しても1回のみトリガできます.コラムの値が変わるたびに、自分で実行します.
💡 ラインフリップフロップ
条件を満たす複数行に対して複数回フリップフロップを繰り返し実行する方法により、FOREACE ROW WHEN条件をFOREACE ROW WHEN条件と定義する.カラム内のデータ行が変更された場合に実行されます.変更されたローはOLDとNEWでインポートできます.
😶 トリガの使い方
CREATE [OR REPLACE] TRIGGER 트리거명
BEFORE|AFTER
[동작(INSERT, UPDATE, DELETE)] ON 테이블명
[REFERENCING NEW | OLD TABLES AS 테이블명]
[FOR EACH ROW]
[WHEN 조건식]
트리거 BODY문
生成するトリガと同じ名前があっても、無視して新しいものに更新することに注意してください.
テーブル変更後にトリガーされるオプション
テーブルの変更前にトリガーされるオプション
INSERT、UPDATE、DELETEの実行時にトリガーされるのは
トリガは、新しく追加または変更された値に適用されます.(INSERT:入力する値、UPDATE:変更する値)
トリガは、変更前の値に適用されます.(UPDATE:変更前値、DELETE:削除する値)
トリガの実行時に遵守すべき条件を指定します.(条件を満たすデータのみをトリガ)
トリガ本体コードの入力部分
BEGINで始まり、ENDで終わり、少なくとも1つ以上のSQL文が必要です.エラー
変数に値を置換する場合は、予約語SETを使用します.
📝 トリガの例
CREATE OR REPLACE oracle_trigger
BEFORE
INSERT ON oracleStudy
REFERENCING NEW TABLE AS new_tirgger
FOR EACH ROW
WHEN new_trigger.점수 = ''
BEGIN
SET NEW_table.점수 = '0';
END;
🤨 トリガの制限
😮 トリガの管理
有効/無効
ALTER TRAIGGERトリガ名[DISABLE|ENABLE]
ALTER TABLEテーブル名[DISABLE|ENABLE]ALL TRAIGGER
ALTER TRAIGGERトリガ名COMPILE;
DROP TRAIGGERトリガ名
SELECT * FROM USER_TRIGGERS
📌 JOB
🤔 JOBとは?
JOB QUEUEスケジューリング期間が
😶 JOBの使い方
Reference
この問題について([ORACLE]USSOFT ORACLEトレーニング4日目), 我々は、より多くの情報をここで見つけました https://velog.io/@h9s10/ORACLE-USSOFT-ORACLE-교육-4일차テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol