PL/SQL %TYPE, %ROWTYPE, 동적타입, DECLARE, CREATE로 프로시저 만들기, 자바학원, 오라클학원, 자바교육, 오라클교육, 오라클동영상, JAVA동영상
http://ojc.asia/bbs/board.php?bo_table=LecSQLnPlSql&wr_id=706
ojc.asia
PL/SQL %TYPE, %ROWTYPE, 동적타입, DECLARE, CREATE로 프로시저 만들기
오라클 PL/SQL
%TYPE
%ROWTYPE
강의 : 이종철
%TYPE 속성
- 실무에서 테이블의 모든 컬럼에 대해 데이터 타입 및 길이를 정확히 알고 있을 수는 없고, 가끔 칼럼 사이즈는 변하기도 한다. 이 경우 %TYPE 속성을 사용한다면 동적으로 대처할 수 있다.
- 변수의 데이터 타입을 어떤 테이블의 어떤 칼럼과 같이 하라는 의미 또는 이전에 정의한 다른 변수와 타입을 같이하라는 의미를 지닌다.
DECLARE
v_ename emp.ename%TYPE;
v_sal emp.sal%TYPE;
tot_sal v_sal%TYPE;
SET SERVEROUTPUT ON; DECLARE NAME EMP.ENAME%TYPE; BEGIN SELECT ENAME INTO NAME FROM EMP WHERE EMPNO = 7499; DBMS_OUTPUT.PUT_LINE('7369 ename : ' || NAME); END; / |
%ROWTYPE 속성
- SELECT LIST에서 전체 컬럼을 선택해서 변수에서 받을 때(SELECT * ) 유용하게 이용된다.
- 어떤 테이블의 ROW(로우, 행, 레코드)와 타입을 같이 하라는 속성이다.
- 테이블의 칼럼에 대해 잘 모르는 경우, 칼럼의 속성들이 자주 변하는 경우에 유용하다.
SQL> edit ojc10
SET SERVEROUTPUT ON
CREATE OR REPLACE PROCEDURE ojc10(p_empno IN NUMBER)
IS
emp_record emp%ROWTYPE;
BEGIN
SELECT *
INTO emp_record
FROM emp
WHERE empno = p_empno ;
DBMS_OUTPUT.PUT_LINE(emp_record.empno || ',' || emp_record.ename || ',' || emp_record.sal || ',' || emp_record.deptno);
END;
/
SQL> @ojc10
프로시저가 생성되었습니다.
SQL> exec ojc10(7369)
7369,SMITH,4500,20
SELECT문의 사용
- SELECT문의 종료는 세미콜론(;)으로 표시한다.
- SELECT절의 칼럼목록과 INTO절의 칼럼목록은 개수 및 데이터 타입이 동일해야 한다.
- SELECT * 인 경우 %ROWTYPE을 사용하면 좀 더 효율적이다.
- INTO절은 필수이며 BEGIN~END 사이에서 사용되는 SELECT는 반드시 한 건만 SELECT 되어야 한다. 한 건도 SELECT 되지 않는다면 ORA-01403(NO_DATA_FOUND) 오류가 발생하고 여러 건 SELECT 된다면 ORA-01422(TOO_MANY_ROWS) 오류가 발생한다.
#PL/SQL, #%TYPE, #%ROWTYPE, #동적타입, #DECLARE, #CREATE, #프로시저, #오라클교육, #자바교육, #오라클학원, #자바학원, #ORACLE교육, #ORACLE동영상, PL/SQL, %TYPE, %ROWTYPE, 동적타입, DECLARE, CREATE, 프로시저, 오라클교육, 자바교육, 오라클학원, 자바학원, ORACLE교육, ORACLE동영상,