오랜만에 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
'IT(job) > DB' 카테고리의 다른 글
평소 자주쓰는 DB Script 양식 (0) | 2020.07.02 |
---|---|
[Oracle] 윤달이 낀 날짜계산 (0) | 2020.04.20 |
[Oracle] 조회된 값의 연산 (0) | 2020.03.18 |
[Oracle] Select, Update, Delete, Alter, Create, Drop... (0) | 2020.02.27 |
Oracle(Tool)에서 & 입력/조회하기 (0) | 2020.02.18 |