레이블이 %TYPE인 게시물을 표시합니다. 모든 게시물 표시
레이블이 %TYPE인 게시물을 표시합니다. 모든 게시물 표시

2021년 12월 24일 금요일

PL/SQL %TYPE, %ROWTYPE, 동적타입, DECLARE, CREATE로 프로시저 만들기, 자바학원, 오라클학원, 자바교육, 오라클교육, 오라클동영상, JAVA동영상

 










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동영상, 
 


2021년 10월 16일 토요일

PL/SQL 강좌. %TYPE 및 %ROWTYPE 속성

 

PL/SQL 강좌. %TYPE 및 %ROWTYPE 속성

15.1.2.3. %TYPE 및 %ROWTYPE 속성


%TYPE 속성


실무에서 테이블의 모든 컬럼에 대해 데이터 타입 및 길이를 정확히 알고 있을 수는 없습니다. 하나의 테이블에 컬럼의 개수가 많은 경우도 많고, 더구나 가끔 칼럼 사이즈는 변하기도 하죠. 이 경우 %TYPE 속성을 사용한다면 PL/SQL에서 보다 능동적으로 대처할 수 있습니다.


변수의 데이터 타입을 어떤 테이블의 어떤 컬럼과 같이 하라는 의미 입니다.

물론 이전에 정의한 어떤 변수와 타입을 같이 하라는 의미를 부여할 수도 있습니다.


DECLARE

   -- v_name 변수의 타입을 EMP 테이블의 ename 컬럼과 같이 정의 합니다.

   v_ename EMP.ENAME%TYPE;


   -- p_name 변수의 타입을 이전에 정의한 v_ename 변수의 타입으로 정의 합니다.

   p_name        v_ename%TYPE;


BEGIN

   …

END


%ROWTYPE 속성


SELECT LIST에서 전체 컬럼을 선택해서(SELECT *) INTO 절의 변수에서 받을 때 유용하게 이용 됩니다. 어떤 테이블의 ROW(로우, 행, 레코드)와 타입을 같이 하라는 속성 입니다. 


%ROWTYPE 속성을 실습해 보겠습니다.

실습


EMP 테이블에서 사번이 7369인 사원의 레코드의 모든 컬럼을 %ROWTYPE을 이용하여 SELECT ~ INTO 절에서 받아 보겠습니다.


아래 PL/SQL 예제를 실습해 보세요.


SET SERVEROUTPUT ON

DECLARE

   -- EMP 테이블의 행, ROW와 구조를 같이하는 EMP_RECORD라는 변수를 정의합니다.

   -- EMP%ROWTYPE을 테이블 기반 레코드 타입 이라고 합니다.

   EMP_RECORD   EMP%ROWTYPE; 

BEGIN

   -- 7360 사원의 모든 컬럼을 추출 후 EMP_RECORD 변수에 담습니다.

   SELECT *

   INTO EMP_RECORD

   FROM EMP

   WHERE EMPNO = 7369 ;

    

   -- 사번(empno), 성명(ename), 부서코드(deptnp) 값을 출력 합니다.

   DBMS_OUTPUT.PUT_LINE(EMP_RECORD.EMPNO || ',' || EMP_RECORD.ENAME || ',' || ',' || EMP_RECORD.DEPTNO);

END;


<실행결과>

7369,SMITH,800,20

2020년 7월 19일 일요일

오라클 PLSQL %TYPE, %ROWTYPE 속성

오라클 PLSQL %TYPE, %ROWTYPE 속성

http://ojc.asia/bbs/board.php?bo_table=LecSQLnPlSql&wr_id=568

3.1.4 %TYPE 속성

n 실무에서 테이블의 모든 칼럼에 대해 데이터 타입 및 길이를 정확히 알고 있을 수는 없고, 가끔 칼럼 사이즈는 변하기도 한다. 이 경우 %TYPE 속성을 사용한다면 능동적으로 대처할 수 있다.

n 변수의 데이터 타입을 어떤 테이블의 어떤 칼럼과 같이 하라는 의미 또는 이전에 정의한 다른 변수와 타입을 같이하라는 의미를 지닌다.

DECLARE

v_ename emp.ename%TYPE;

v_sal emp.sal%TYPE;

tot_sal v_sal%TYPE;

3.1.5 %ROWTYPE 속성

n SELECT LIST에서 전체 칼럼을 선택해서 변수에서 받을 때(SELECT * ) 유용하게 이용된다.

n 어떤 테이블의 ROW(로우, 행, 레코드)와 타입을 같이 하라는 속성이다.

n 테이블의 칼럼에 대해 잘 모르는 경우, 칼럼의 속성들이 자주 변하는 경우에 유용하다.

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

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...