2012. 7. 11. 17:14

1. PL/SQL에서의 SQL문장

   - SELECT를 했을때 row가 한건만 나와야 한다.
   - DML 명령어를 사용할 수 있다.
   - COMMIT, ROLLBACK, SAVEPOINT를 사용할 수 있다.
   
   * PL/SQL은 DDL(CREAE TABLE, ANTER TABLE, DROP TABLE...)을 지원하지 않는다.
   * PL/SQL은 DCL(GRANT, REVOKE)을 지원하지 않는다.
   
2. PL/SQL에서의 SELECT문장

   예1) DECLARE
           v_deptno NUMBER(2) ;
           v_loc    VARCHAR2(15) ;
        BEGIN
           SELECT deptno, loc
             INTO v_deptno, v_loc
             FROM dept
            WHERE dname = 'SALES' ;
        ...
        END ;
   
   예2) DECLARE
           v_orderdate ord.orderdate%TYPE ;
           v_shipdate  ord.shipdate%TYPE ;
        BEGIN
           SELECT orderdate, shipdate
             INTO v_orderdate, v_shipdate
             FROM ord
            WHERE id = 15 ;
        ...
        END ;
        
   예3) DECLARE
           v_sum_sal   emp.sal%TYPE ;
           v_deptno    NUMBER NOT NULL := 10 ;
        BEGIN
           SELECT SUM(sal)  -- group function
             INTO v_sum_sal
             FROM emp
            WHERE deptno = v_deptno ;
        ...
        END ;

3. PL/SQL에서의 INSERT문장

   DECLARE
      v_empno  emp.empno%TYPE ;
   BEGIN
      SELECT empno_sequence.NEXTVAL
        INTO v_empno
        FROM dual ;
        
      INSERT INTO emp (empno, ename, job, deptno)
             VALUES (v_empno, 'HARDING', 'CLERK', 10) ;
   END ;
   
4. PL/SQL에서의 UPDATE문장

   DECLARE
      v_sal_increase emp.sal%TYPE := 2000 ;
   BEGIN
      UPDATE emp
         SET sal = sal + v_sal_increase
       WHERE job = 'ANALYST' ;
   END ;
   
5. PL/SQL에서의 DELETE문장

   DECLARE
      v_deptno emp.deptno%TYPE := 10 ;
   BEGIN
      DELETE FROM emp
       WHERE deptno = v_deptno ;
   END ;
   
6. SQL Cursor

   - Implicit Cursors
     ; select된 row가 1건일 때, 선언안해도 내부적으로 오라클이 커서를 선언한다.
     * Implicit Cursor일 때 오라클이 내부적으로 잡은 Cursor명은 'SQL' 이다
     
   - Explicit Cursors
     ; select된 row가 1건 이상일 때, 개발자가 꼭 선언을 해줘야한다.
   
7. Implicit Cursor(SQL Cursor) Attributes

   SQL%ROWCOUNT : row수
   SQL%FOUND    : 조건에 맞는 데이터를 찾으면 TRUE를 return
   SQL%NOTFOUND : 조건에 맞는 데이터를 못 찾으면 TRUE를 return
   SQL%ISOPEN   : cursor가 open되었는지를 판단. implicit cursor는 execute되자마자 cursor가
                  close되기 때문에 항상 FALSE를 return한다.
                  
8. SQL Cursor Attribute 사용법.

   VARIABLE rows_deleted
   DECLARE
      v_ordid NUMBER := 605 ;
   BEGIN
      DELETE FROM item
       WHERE ordid = v_ordid ;
             rows_deleted := SQL%ROWCOUNT||' rows deleted.') ;
   END ;
   PRINT rows_deleted

'DATABASE > ORACLE' 카테고리의 다른 글

SQL*Loader 사용법 1  (0) 2012.07.11
[SQL&PL/SQL] 22.Handling Exceptions  (0) 2012.07.11
[SQL&PL/SQL] 8.Producing Readable Output with SQL*Plus  (0) 2012.07.11
[SQL&PL/SQL] 3.Single-Row Functions  (0) 2012.07.11
[Db Admin] 20.Managing Roles  (0) 2012.07.09
Posted by 몰라욧