2009. 3. 14. 03:33 Program.../Oracle

Oracle View

--- ○ View
create or replace view v_sawonexpire
as
select Y.*,
       add_months(to_char(sysdate,'yyyy') || '-02-05', 12*(60-Y.현재나이)) "정년일",
       trunc(add_months(to_char(sysdate,'yyyy') || '-02-05', 12*(60-Y.현재나이)) - sysdate,0) "남은일수",
       trunc(sysdate - to_date(Y.입사일,'yyyy-mm-dd'),0) "근무일"
from (select case when substr(minbun,7,1) in ('1','2')
       then extract(year from sysdate) - (to_number(substr(minbun,1,2)) + 1899)
          when substr(minbun,7,1) in ('3','4')
    then extract(year from sysdate) - (to_number(substr(minbun,1,2)) + 1999)
       end "현재나이",
             to_char(hiredate,'yyyy-mm-dd') "입사일"
      from SAWON) Y;
--- create or replace view 뷰명 as (문장) : 해당문장을 지정한 뷰명으로 만들되
--                                          해당 뷰명이 있으면 replace(교체) 하고 없으면
--                                          새롭게 생성한다.
select * from v_sawonexpire;

select *
from v_sawonexpire
where extract(year from to_date(정년일,'yyyy-mm-dd')) >= 2050; -- 뷰 사용한 예제

create or replace view v_emp10
as
select empno, ename, sal
from emp
where deptno = 10;

select * from v_emp10;

create or replace view v_emp10
as
select empno, ename, sal, comm, coalesce(sal*12+comm, sal*12, 0) "YearPay"
    -- 원래 테이블에 있는 순수한 컬럼이 아니고 수식을 컬럼처럼 출력할때는 별칭을 해주어야한다.
from emp
where deptno = 10;

create or replace view v_emp10(사원번호, 사원명, 연봉) -- 뷰명 옆에 직접 별칭을 줄수 있다.
as
select empno, ename, coalesce(sal*12+comm, sal*12, 0)
from emp
where deptno = 10;

select 사원명  --- view를 사용한 예시문
from v_emp10
where 연봉 >= 2000
--// view와 view, 테이블과 view 모두 join이 되어진다.
--------------------------------------------------------------------------------------------------
-- view의 원본소스를 보자.
select * from tab; -- 해당유저의 테이블과 뷰를 모두 보여준다.

select *
from user_views
where view_name = 'V_SAWONEXPIRE'; -- 해당 뷰의 정보를 나타낸다.

select text
from user_views
where view_name='V_SAWONEXPIRE'; -- 해당 뷰의 텍스트 정보를 나타낸다.

Posted by Duritz

공지사항

Yesterday
Today
Total
12-05 02:20

달력

 « |  » 2024.12
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31