search results for '오라클'

  1. 2008/03/15 Oracle 교육 - PL/SQL
  2. 2008/03/15 Oracle 교육 - SQL

Oracle 교육 - PL/SQL

Work 2008/03/15 16:26

오라클 공식 사이트 - tool이나 manual 등
(otn.oracle.com/kr)


* tools - instant client, sql developer (둘다 기업에서 사용해도 무료임)
* manual


PL/SQL <- Ada <- Pascal

- 블럭형 구조
declare
  v_sal1  number;
  v_sal2  number;
begin
  select sal into v_sal1
  from emp
  where empno = '7788';
 -- 주석
  /*  주석  */
  select sal into v_sal2
  from emp
  where empno = '7782';

  if v_sal1 > v_sal2 then
     dbms_output.put_line('7788win');
  end if;

end;            
/

;  - 전체 블럭의 종료
/  - 실행


변수 선언시 참고할 점
변수의 데이터형을 정할때, db의 자료형이 변하는경우를 생각하여 그때 끄때 db의 자료형에 맞춰갈 수 있도록 선언하는 방법

declare
  v_ename emp.ename%type;            -- 변수 하나
  v_job      emp.job%type;

  emp_rec  emp%rowtype;                 -- 하나의 레코드
  TYPE emp_record_type IS RECORD  -- data type 생성
    (ename emp.ename%type,
      job     emp.job%type,
      sal     emp.sal%type);
 
  emp_rec1 emp_record_type;             -- data type instance 생성
  emp_rec2 emp_record_type;              -- data type instance 생성

  TYPE emp_sal_table_type IS TABLE OF emp.sal%type
     INDEX BY PLS_INTEGER;               -- 배열 타입 생성
 
  emp_sal_tab1 emp_sal_table_type;      -- 배열 instance 생성
  emp_sal_tab2 emp_sal_table_type;

  TYPE emp_tab_row_type IS TABLE OF emp%rowtype
     INDEX BY PLS_INTEGER;               -- 구조체 배열 타입 생성
 
  emp_tab_row emp_tab_row_type;        -- 구조체 배열 instance생성
begin
  select  ename, job, sal into emp_rec1
  from emp
  where empno = 7788;

select  * into emp_rec
  from emp
  where empno = 7782;

 dbms_output.put_line(emp_rec.ename||' '||to_char(emp_rec.sal));

select sal bulk collect into emp_sal_tab1
  from emp
  where deptno = 10;

select * bulk collect into emp_tab_row
  from emp
  where deptno = 10;
end;
/



## 모든 에러는 번호로 알 수 있지만, 모든 예외처리는 이름으로 한다
1. Predefined
2. Non-predefined -> when others then
3. Non-predefined -> 이름 붙여서
4. User-defined
5. User-defined


===================================================================================

Oracle 교육 - SQL

Work 2008/03/15 15:40
======================================================================================
sql example
======================================================================================
> select * from tab;    // 테이블 명을 보여준다
TNAME                                                        TABTYPE        CLUSTERID
------------------------------------------- -------------- ----------
EMP                                                           TABLE
DEPT                                                          TABLE
BONUS                                                        TABLE
SALGRADE                                                  TABLE
DUMMY                                                       TABLE


> desc emp
이름                                                              널?           유형
-------------------------------------------- --------    -------------------
EMPNO                                                        NOT NULL  NUMBER(4)
ENAME                                                                         VARCHAR2(10)
JOB                                                                             VARCHAR2(9)
MGR                                                                            NUMBER(4)
HIREDATE                                                                     DATE
SAL                                                                             NUMBER(7,2)
COMM                                                                         NUMBER(7,2)
DEPTNO                                                                       NUMBER(2)

// alias를 사용한다. " "로 묶으면 묶은 그대로 나오고 아니면 무조건 대문자로 나온다
> select job as "abc" from emp;
abc
------------------
CLERK
SALESMAN
SALESMAN
MANAGER
SALESMAN
MANAGER
MANAGER
ANALYST
PRESIDENT
SALESMAN
CLERK

abc
------------------
CLERK
ANALYST
CLERK

> select job as abc from emp;
ABC
------------------
CLERK
SALESMAN
SALESMAN
MANAGER
SALESMAN
MANAGER
MANAGER
ANALYST
PRESIDENT
SALESMAN
CLERK

ABC
------------------
CLERK
ANALYST
CLERK


> select * from emp
     order by deptno asc, sal desc;

EMPNO  ENAME         JOB               MGR HIREDATE        SAL       COMM     DEPTNO
-----     ------------  ------------- ----- --------          -----      -------    -------
 7839      KING             PRESIDENT              81/11/17         5000                     10
 7782      CLARK          MANAGER      7839   81/06/09          2450                     10
 7934      MILLER         CLERK           7782   82/01/23          1300                     10
 7788      SCOTT          ANALYST       7566   82/12/09          3000                     20
 7902      FORD            ANALYST       7566   81/12/03          3000                     20
 7566 JONES                MANAGER                  7839 81/04/02       2975                    20
 7876 ADAMS                CLERK                    7788 83/01/12       1100                    20
 7369 SMITH                CLERK                    7902 80/12/17        800                    20
 7698 BLAKE                MANAGER                  7839 81/05/01       2850                    30
 7499 ALLEN                SALESMAN                 7698 81/02/20       1600        300         30
 7844 TURNER               SALESMAN                 7698 81/09/08       1500          0         30

===================================================================================