728x90
반응형
SMALL

분류 전체보기 342

231102 PL/SQL 문제

[문제] 사원번호를 입력값으로 받아서 그 사원의 근무 연수를 출력하고 근무 연수가 20년 이상이면 급여를 20% 인상한 급여로 수정, 20년 보다 작고 17년 보다 크거나 같으면 10%인상한 급여로 수정, 17년 미만인 근무자는 아무 작업을 수행하지 않는 프로그램을 작성하세요. (테스트가 끝나면 rollback 합니다.) BEGIN sal_update_proc(100); rollback; END; / 100 사원은 근무 연수가 20년 입니다. 이전 급여는 26400 수정된 급여는 31680 입니다. BEGIN sal_update_proc(103); rollback; END; / 103 사원은 근무 연수가 17년 입니다. 이전 급여는 9000 수정된 급여는 9900 입니다. BEGIN sal_update_..

문제/SQL 2023.11.02

231102 PL/SQL PROCEDURE RETURN문, EXCEPTION, RAISE_APPLICATION_ERROR, CASE-WHEN THEN ELSE END CASE;

# RETURN 문 : 프로시저 종료 # OR REPLACE 옵션 : 프로시저를 삭제, 생성할 경우, 권한은 그대로 생존. CREATE OR REPLACE PROCEDURE hr.query_emp ( p_id NUMBER ) IS v_rec hr.employees%ROWTYPE; BEGIN IF p_id IN (100, 101, 102) THEN -- TRUE RETURN; -- 종료 ELSE SELECT * INTO v_rec FROM hr.employees WHERE employee_id = p_id; DBMS_OUTPUT.PUT_LINE(v_rec.last_name||' works on '||v_rec.job_id||', earns $'||v_rec.salary||' per month.'); END..

Data Base/PL SQL 2023.11.02

231102 PL/SQL PROCEDURE 생성 후 권한 부여 및 회수

; - HR SESSION 에서 프로시저 생성 CREATE OR REPLACE PROCEDURE hr.query_emp ( p_id NUMBER ) IS v_rec hr.employees%ROWTYPE; BEGIN SELECT * INTO v_rec FROM hr.employees WHERE employee_id = p_id; DBMS_OUTPUT.PUT_LINE(v_rec.last_name||' works on '||v_rec.job_id||', earns $'||v_rec.salary||' per month.'); EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('해당 사원이 없습니다'); WHEN OTHERS THEN DBMS_OUTPUT.PUT_L..

Data Base/PL SQL 2023.11.02

231102 PL/SQL 서브프로그램(Sub Program), 프로시저, ERROR

■ PL/SQL 서브프로그램(Sub program) 1. 반복적으로 호출 할 수 있는 이름이 있는 PL/SQL 블록이다. 2. PL/SQL 블록 또는 다른 서브 프로그램 내에서 서브프로그램을 선언하고 정의할 수 있다. 3. 서브 프로그램은 프로시저, 함수, 패키지를 통칭해서 말한다. 1) 프로시저 : SELECT문, DML, COMMIT, ROLLBACK, SAVEPOTIN 업무작업 수행 → 함수 사용시 변수+EXECUTE 이용 2) 함수 : 값을 계산하고 반환할 때 사용. 기능 프로그램. (SQL 문장에 가능하면 X → 문제 가능성 ↑) 3) 패키지 : 프로시저+함수 : 프로시저, 함수를 '그룹화' 할 수 있음. ▷ IN(값, 상수) ,OUT(변수) ,IN OUT() 모드 != SIZE X # 표현식 ..

Data Base/PL SQL 2023.11.02

231101 PL/SQL 프로시저 컴파일, FORMAL PARLACE 형식매개변수, IN MODE, OUT MODE, IN-OUT MODE

[문제] 사원번호를 입력값으로 받아서 그 사원의 정보를 출력하는 프로그램을 작성해 주세요. execute :b_id :=100; print :b_id; DECLARE v_id NUMBER := :b_id; v_rec hr.employees%ROWTYPE; BEGIN SELECT * INTO v_rec FROM hr.employees WHERE employee_id = v_id; dbms_output.put_line(v_rec.employee_id||' '||v_rec.last_name); EXCEPTION WHEN NO_DATA_FOUND THEN dbms_output.put_line(v_id||' 사원은 존재하지 않습니다.'); END; / # 바인드변수 프로그램외 사용가능+ 익명블록구조 내에서만 사용..

Data Base/PL SQL 2023.11.01

231101 PL/SQL 복습 겸 문제

[문제] 사원들 중에 job_id가 'SA_REP' 사원들의 이름, 부서 이름을 출력하고 부서 배치를 받지 않는 사원에 대해서는 "부서 배치를 못 받았습니다." 출력해야 합니다. 또한 출력할때 카운터 수를 출력해주세요.(조인은 이용하지 마세요) HIT) SELECT문, 서브블록, 반복문, 로드, 암시적커서-예외처리 내가 쓴 코드) DECLARE e_raise EXCEPTION; -- 예외사항 변수 job hr.employees.job_id%TYPE; BEGIN FOR emp_rec IN ( SELECT last_name FROM hr.employees WHERE job_id = 'SA_REP') LOOP dbms_output.put_line('사원이름 : '||emp_rec.last_name); END ..

문제/SQL 2023.11.01

231031 PL/SQL 문제

[문제] 전체 사원 들의 사번, 이름, 급여, 입사일, 근무연수를 출력합니다. 또한 근무연수가 15년 이상이고 급여는 10000 미만인 사원들은 예외사항이 발생하도록 한 후 메시지 출력하고 프로그램 수행이 완료된 후에 분석할수있도록 years 테이블에 정보가 입력이 되도록 프로그램을 작성합니다. 근무연수는 소수점은 버리세요. SQL> create table years(id number, name varchar2(30), sal number, year number); .... 200, Whalen, 5856.4, 03/09/17, 20 사원 200 근무연수는 20년이고 급여는 5856.4 입니다. 201, Hartstein, 13000, 04/02/17, 19 202, Fay, 6000, 05/08/17,..

문제/SQL 2023.10.31

231031 PL/SQL EXCEPTION(예외처리)

■ exception (예외처리) 1. 실행 중에 발생한 PL/SQL 오류 2. Oracle에 의해서 암시적으로 발생. 3. 프로그램에 의해서 명시적으로 발생. DECLARE v_id NUMBER := 300; v_rec hr.employees%rowtype; BEGIN SELECT * INTO v_rec FROM hr.employees WHERE employee_id = v_id; dbms_output.put_line(v_rec.employee_id||' '||v_rec.last_name); END; / # 예외 처리 DECLARE v_id NUMBER := 300; v_rec hr.employees%rowtype; BEGIN SELECT * INTO v_rec FROM hr.employees WHER..

Data Base/PL SQL 2023.10.31

231031 PL/SQL CURSOR

# 실행계획을 공유하면 안되는 경우, DATA의 분포도에 따라(불균등) SELECT employee_id, last_name, job_id FROM hr.employees WHERE department_id = 80 AND job_id = 'SA_MAN'; SELECT employee_id, last_name, job_id FROM hr.employees WHERE department_id = 50 AND job_id = 'ST_MAN'; DECLARE CURSOR param_cur_80 IS SELECT employee_id, last_name, job_id FROM hr.employees WHERE department_id = 80 -- 값을 변수 AND job_id = 'SA_MAN'; -- 값을 ..

Data Base/PL SQL 2023.10.31

231031 복습 겸 문제

[문제] 2006년도에 입사한 사원들의 근무 도시이름별로 급여의 총액, 평균을 출력하세요. Southlake 도시에 근무하는 사원들의 총액 급여는 ₩13,800 이고 평균급여는 ₩6,900입니다. South San Francisco 도시에 근무하는 사원들의 총액 급여는 ₩37,800 이고 평균급여는 ₩2,907입니다. Seattle 도시에 근무하는 사원들의 총액 급여는 ₩7,800 이고 평균급여는 ₩7,800입니다. Seattle 도시에 근무하는 사원들의 총액 급여는 ₩2,600 이고 평균급여는 ₩2,600입니다. Oxford 도시에 근무하는 사원들의 총액 급여는 ₩59,100 이고 평균급여는 ₩8,442입니다. 내가 쓴 코드) SQL문SELECT l.city, SUM(e.salary), ROUND(AV..

문제/SQL 2023.10.31
728x90
반응형
LIST