본문 바로가기

DataBase

(45)
PL/SQL-5_사용자정의예외 더보기 -풀이 DECLARE e_user_exception EXCEPTION; v_deptno NUMBER:=110; v_cnt NUMBER; v_employee_id employees2.employee_id%TYPE; BEGIN SELECT MAX(EMPLOYEE_ID)+1 INTO v_employee_id from employees2; SELECT count(*) INTO v_cnt FROM EMPLOYEES2 where department_id=v_deptno; SYS.DBMS_OUTPUT.PUT_LINE('부서번호 값 개수:'||v_cnt); if v_cnt=0 THEN RAISE e_user_exception; INSERT INTO EMPLOYEES2(EMPLOYEE_ID,LAST_NAME, E..
PL/SQL-4_반복문(LOOP, FOR)
PL/SQL-3_조건문(IF, CASE 둘 다 이용해보기) Declare v_department_id number:=Round(dbms_random.value(10,120),-1); v_grade varchar2(50); v_avgSal employees.salary%type; BEGIN select Trunc(avg(salary)) into v_avgSal from employees where department_id=v_department_id; if v_avgSal between 1 and 3000 Then v_grade:='낮음'; elsif v_avgSal>3000 and v_avgSal
PL/SQL-2_ROWTYPE DECLARE v_dept dept%rowtype; v_deptno dept.deptno%type:=40; BEGIN select * into v_dept from dept where deptno=v_deptno; dbms_output.put_line(v_dept.deptno||'의 부서 정보'); dbms_output.put_line('부서 이름: '||v_dept.dname); dbms_output.put_line('지역 : '||v_dept.loc); END;
PL/SQL-1_레퍼런스데이터타입 --1번 set serveroutput on; declare v_employee_id employees.employee_id%type:=201; v_last_name employees2.last_name%type; v_email employees2.email%type; BEGIN select last_name, email into v_last_name, v_email from employees2 where employee_id=v_employee_id; DBMS_OUTPUT.PUT_LINE('성 : '||v_last_name||' 이메일 : '||v_email); END; DECLARE v_employee_id employees2.employee_id%type; BEGIN SELECT NVL(MAX(EM..
11.트리거(Trigger) 트리거(Trigger)란? 특정 테이블의 데이터에 변경이 이루어 졌을 때, 자동으로 다른 어떤 작업이 함께 수행되도록 설정하는 것 자동으로 파생되는 작업이 이루어 져서 굉장히 편하다 데이터 값 받아오는 방법 INSERT :OLD.컬럼 → NULL, :NEW.컬럼→ 입력 값 UPDATE :OLD.컬럼 → 변경전 값, :NEW.컬럼→변경후 값 DELETE :OLD.컬럼 → 삭제전 값,:NEW.컬럼→ NULL -생성 create or replace trigger 트리거이름 After DML질의문 ON 해당되는테이블 (FOR EACH ROW) BEGIN ~ END; ex) CREATE OR REPLACE TRIGGER trg_01 AFTER INSERT ON EMP11 BEGIN DBMS_OUTPUT.PUT_L..
10.패키지(Package) : 관련있는 프로시저/함수를 효율적으로 관리하기 위해 모듈화 시킨 후 배포하기 위해 순서 1.패키지 선언 2.본문정의 3.실행 패키지명.프로시저명(or함수명)() -선언 CREATE OR REPLACE PACKAGE 패키지이름 IS PROCEDURE 정의 (내용없이 시그너처만); FUNCTION 정의 (내용없이 시그너쳐만); END; ex) --패키지 선언 CREATE OR REPLACE PACKAGE my_package IS PROCEDURE getEmployee(in_id in employees.employee_id%type, out_id OUT number, out_name out employees.first_name%type, out_salary out employees.salary%type); FUNCTION getSalary(p_no employees.employee_id%T..
9.FUNCTION (프로시저에 비해 좀 더 유연하게 사용 가능) 리턴값 반환 받을 때에 프로시저와 달리 SQL 쿼리에서 직접 사용 가능!! FUNCTION 선언 CREATE OR REPLACE FUNCTION 함수명(매개변수 타입) RETURN 타입만 IS 정의 선언부(declare없이) BEGIN 사용 RETURN 값; END; CREATE OR REPLACE FUNCTION getSalary(p_no Number) return number is v_salary number; begin select salary into v_salary from employees where employee_id=p_no; return v_salary; end; 실행시 SELECT getSalary(100) FROM dual;