본문 바로가기

빅데이터과정/PL/SQL

#16_140704_PL_SQL_종속성

728x90

# 종속성




참조한 객체에 따라서 프로시져뷰 등등이 종속성에 영향을 받는다
객제를 변형한 경우에 유형에 따라서 동작할 수도 있고 동작안할 수도 있다

failure 를 최소화 하는 방법
1.     %rowtype 속성으로 레코드 선언
2.     %type 속성으로 변수 선언
3.     select *  query를 해라


4.     insert 문을 사용하여 컬럼 리스트를 입력해라





문제198. 직업이 SALESMAN, ANALYST 인 사원들의 이름과 월급과 직업과 부서번호를 출력하는 VIEW를 생성하고 이름을 입력하면 이름과 월급을 출력하는 프로시져를 만드시오

 CREATE VIEW emp934
AS
SELECT ename, sal, job, deptno
FROM EMP
WHERE job IN ('SALESMAN','ANALYST');

--------------------------------------------------------- 
CREATE OR REPLACE PROCEDURE pro199
(p_ename varchar2)
IS

CURSOR emp_cursor IS
 SELECT ename, sal
 FROM emp934
 WHERE ename=p_ename;

BEGIN
 FOR emp_record IN emp_cursor LOOP
  dbms_output.put_line('사원이름 : ' || emp_record.ename);
  dbms_output.put_line('월급     : ' || emp_record.sal);
 END LOOP;
 END;
 /

CREATE OR REPLACE PROCEDURE pro199
(p_ename varchar2)
IS

 v_ename emp.ename%TYPE;
 v_sal emp.sal%TYPE;


BEGIN
 SELECT ename, sal INTO v_ename, v_sal
 FROM emp934
 WHERE ename=p_ename;

  dbms_output.put_line('사원이름 : ' || v_ename);
  dbms_output.put_line('월급     : ' || v_sal);
 END;
 /



문제200. user_dependencies 딕셔너리를 이용해서 emp와 emp934 뷰의 종속성을 확인하시오

SELECT NAME,type,referenced_name,referenced_type
 FROM user_dependencies
 WHERE referenced_name IN ('EMP','EMP934');




문제201. 아래의 객체들의 현재 상태를 확인하시오

SELECT object_name, object_type, status
 FROM user_objects
 WHERE object_name IN ('EMP','EMP934','PRO199');






문제202. 사원테이블의 sal 컬럼의 길이를 number(10)으로 변경하시오

ALTER TABLE EMP
MODIFY sal NUMBER(10,2);
number(10,2) : 전체 10자리 잡고 소수점 2자리 허용하겠다
컬럼의 길이를 변경했지만 상태는 valid 상태인것을 확인할 수 있다.





문제203. emp 테이블의 sal 컬럼을 삭제하시오

ALTER TABLE EMP
DROP COLUMN sal;

객체 상태를 확인하면 invalid 가 된 것을 확인할 수 있다





문제204. invalid 된 프로시져를 compile 하는 명령어

ALTER PROCEDURE pro199 COMPILE;

SQL> ALTER PROCEDURE pro199 COMPILE;
Warning: Procedure altered with compilation errors.
컬럼 삭제로 컴파일에서 오류가 발생한다



문제205. 사원 테이블에 email 컬럼을 추가하시오

ALTER TABLE EMP
ADD email VARCHAR2(30);


11g부터는 컬럼 추가가 영향을 미치지 않는다


'빅데이터과정 > PL/SQL ' 카테고리의 다른 글

#15_140703_PL_SQL_암호화  (0) 2014.07.15
#15_140703_PACKAGE_OVERLOAD  (0) 2014.07.15
#15_140703_PL_SQL_PACKAGE  (0) 2014.07.15
#14_140702_PL_SQL_TRIGGER  (0) 2014.07.15
#14_140702_PL_SQL_RETURNING  (0) 2014.07.15