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 |