posted by 지긋이 2020. 4. 7. 14:03

오랜만에 VIEW 생성 및 권한 처리가 필요하여 작업하며 기록에 남긴다.

1. 뷰 생성하기(테이블 및 컬럼은 예시 기재)
CREATE OR REPLACE FORCE VIEW "계정명"."V_뷰이름" 
("성명", "사번", "직위", "년차", "생년월일", "양력구분", "재직상태", "최종진급일", "전직급승진일") 
AS 
SELECT  NAME                        AS 성명
      , SABUN                          AS 사번
      , JIKWEE_CD                     AS 직위
      , F_COM_GET_JIKWEE_YEUNCHA(SABUN, TO_CHAR(SYSDATE, 'YYYYMMDD')) AS 년차
      , BIR_YMD                        AS 생년월일
      , DECODE(LUN_TYPE,1,'양',2,'음') AS 양력구분
      , STATUS_CD                    AS 재직상태 
      , CURR_JIKGUB_YMD          AS 최종진급일
      , NVL(ORD_YMD,CURR_JIKGUB_YMD) AS 전직급승진일
FROM (
                       SELECT A.NAME       AS NAME             -- 성명
                               , A.RES_NO     AS RES_NO           -- 주민번호
                               , A.BIR_YMD    AS BIR_YMD          -- 생년월일
                               , A.EMP_YMD    AS EMP_YMD       -- 입사일
                               , A.GEMP_YMD   AS GEMP_YMD    -- 그룹입사일
                               , A.LUN_TYPE   AS LUN_TYPE         -- 양음구분(1;양, 2:음)
                               , C.*
                              , F_COM_GET_CURR_JIKWEE_YMD(A.ENTER_CD,A.SABUN,TO_CHAR(SYSDATE,'YYYYMMDD'))
                                AS CURR_JIKGUB_YMD
                       FROM 인사마스터 A
                               , 인사기본 C
                       WHERE A.ENTER_CD = C.ENTER_CD
                          AND A.SABUN    = C.SABUN
                          AND A.RET_YMD IS NULL
                          AND C.STATUS_CD NOT IN('RA')
                          AND TO_CHAR(SYSDATE, 'yyyymmdd') BETWEEN C.SDATE AND NVL(C.EDATE, '99991231')
              )  
              WHERE SABUN NOT IN ('testinsa') -- 테스트계정                           
                 order by STATUS_CD, SABUN, NAME;

2. 권한주기 : 타 계정                            
grant select on ROSEBAY.V_INSA_INFO to INSA_INF;
                     계정명.뷰이름             to 권한 부여할 계정명
! 유저 계정 생성하기
create user testUser identified ROSEBAY
 USER를 생성하기 위해서는 USER생성 권한이 있는 사용자로 접속해야 한다.

3. 타 계정(INSA_INF)에서 조회하기
select * from ROSEBAY.V_INSA_INFO;

4. 동의어(synonym) 부여하기
create synonym V_INSA_INF for ROSEBAY.V_INSA_INFO;
         동의어로 사용할 이름 for 원래 이름
select * from V_INSA_INF ; 
( = select * from ROSEBAY.V_INSA_INFO; )

참고자료
유저생성 : http://www.gurubee.net/lecture/1005

 

USER의 생성

- 새로운 USER를 생성하기 위해서는 CREATE USER문을 이용하면 된다. - USER를 생성하기 위해서는 USER생성 권한이 있는 사용자로 접속해야 한다..

www.gurubee.net