오라클 PL/SQL에서 SQL문장(SELECT, UPDATE, INSERT, DELETE) 사용
http://ojc.asia/bbs/board.php?bo_table=LecSQLnPlSql&wr_id=570
3.2 PL/SQL에서 SQL문장 사용
n PL/SQL은 SELECT, INSERT, UPDATE, DELETE와 같은 DML(Data Manipulation Language) 및 COMMIT, ROLLBACK과 같은 TCL(Transaction Control Language)을 지원한다.
n DDL(Data Definition Language)에 대해서는 지원하지 않는다(CREATE, DROP, ALTER). 만약 사용하려 한다면 Dynamic SQL(EXECUTE IMMEDIATE 구문, DBMS_SQL패키지 이용)을 사용해야 한다.
n DCL(Data Control Language)도 지원하지 않는다.(GRANT, REVOKE)
3.2.1 SELECT문의 사용
n SELECT문의 종료는 세미콜론(;)으로 표시한다.
n SELECT절의 칼럼목록과 INTO절의 칼럼목록은 개수 및 데이터 타입이 동일해야 한다.
n SELECT * 인 경우 %ROWTYPE을 사용하면 좀 더 효율적이다.
n INTO절은 필수이며 BEGIN~END 사이에서 사용되는 SELECT는 반드시 한 건만 SELECT 되어야 한다. 한 건도 SELECT 되지 않는다면 ORA-01403(NO_DATA_FOUND) 오류가 발생하고 여러 건 SELECT 된다면 ORA-01422(TOO_MANY_ROWS) 오류가 발생한다.
[기본형식]
3.2.2 INSERT/UPDATE/DELETE문의 사용
n 일반적인 DML 사용하는 방법과 같다.
n WHERE절을 만족하는 레코드가 없더라도 오류가 발생하지 않고 WHERE절을 기술하지 않았다면 전체 레코드에 대해 DML이 처리된다.