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


오라클 PL/SLQ이란? PLSQL개요, 작성방법, 기본문법, declare, 자바학원, 오라클학원, 오라클동영상, JAVA학원, ORACLE학원

 




오라클 PL/SLQ이란? PLSQL개요, 작성방법, 기본문법, declare

오라클 PL/SLQ이란? PLSQL개요, 작성방법, 기본문법, declare오라클 PL/SQLPL/SQL 이란?작성방법, 기본문법, 예제강의 : 이종철PL/SQL 이란?PL/SQL은 PROCEDUAL LANGUAGE/SQL의 약어로 “SQL 구문을 절차적인 형태로 프로그래밍 할 수 있게 한 SQL의 확장” 입니다.PL/SQL은 BEGIN~END 사이에 PL…

ojc.asia











오라클 PL/SLQ이란? PLSQL개요, 작성방법, 기본문법, declare




오라클 PL/SQL



PL/SQL 이란?

작성방법, 기본문법, 예제



강의 : 이종철





PL/SQL 이란?



  • PL/SQL은 PROCEDUAL LANGUAGE/SQL의 약어로 “SQL 구문을 절차적인 형태로 프로그래밍 할 수 있게 한 SQL의 확장” 입니다.
  • PL/SQL은 BEGIN~END 사이에 PL/SQL 코드를 기술하여 비지니스 로직 처리를 하는데 DML문, 절차적 언어의 IF문과 같은 제어문, 반복문(LOOP~END LOOP) 등을 사용하여 SQL을 이용하여 프로그래밍이 가능하도록 한 것입니다.
  • PL/SQL은 DECLARE로 선언되는 익명 블록과, 값을 반드시 리턴하는 함수(FUNCTION), 실행만 하는 프로시저(PROCEDURE), 트리거링 이벤트에 의해 자동 실행되는 프로시저인 트리거(Trigger), 비슷한 기능을 하는 함수, 프로시저를 묶어 놓은 패키지 등이 있습니다.
  • 익명 블럭은 오라클 서버에서 컴파일되어 SGA의 SHARED POOL에 위치시키지만 소스코드와 컴파일된 코드를 별도로 저장하지는 않습니다.
  • 함수나 프로시저, 패키지, 트리거는 STORED PROGRAM 이라 하며 데이터베이스 SCHEMA OBJECTS로 저장되고 호출되어 실행된다.
  • PL/SQL로 작성된 구문중 절차적 언어와 같은 구문, PL/SQL 기본문법구문은 PROCEDUAL STATEMENT EXECUTOR에서 실행하고 SQL구문은 SQL STATEMENT EXECUTOR에서 실행 합니다.
  • PL/SQL 프로그램은 오라클 서버에서 컴파일 되고 저장되며, 클라이언트에 의해 호출되어 실행 됩니다





PL/SQL 장점


  • BEGIN~END와 같은 블록 구조를 가지므로 블록 안의 여러 SQL 구문이 한번에 서버로 전송되므로 수행속도가 향상되고 통신량도 줄일 수 있습니다.
  • 블록안에 또 다른 블록을 포함하는 형태로 코드를 모듈화 할 수 있습니다.
  • 단일형 데이터 타입(SCALAR DATA TYPE), 복합데이터 타입(COMPOSITE DATA TYPE), 상수 등 여러 형태의 변수 선언이 가능하다.
  • 테이블의 컬럼을 참조하는 동적 변수를 정의 할 수 있습니다.(%TYPE, %ROWTYPE)
  • IF문과 같은 조건문을 사용할 수 있습니다.
  • LOOP~END LOOP, FOR..LOOP~END LOOP, WHILE .. LOOP~END LOOP와 같은 반복문을 사용할 수 있습니다.
  • Exception절을 이용하여 프로그래밍 언어처럼 예외(오류)를 처리 할 수 있으며 사용자 정의 예외의 사용도 가능 합니다.


 

PL/SQL 작성방법


  • 명령문의 종료는 세미콜론(;) 입니다.
  • CREATE 구문을 사용했다면 실행을 위해 마지막에 슬래시(‘/’)가 필요 합니다.
  • 익명의 블록을 만들기 위해서는 DECLARE 구문으로, 이름있는 블록을 만들기 위해서는 CREATE 구문을 사용해야 합니다.
  • 하나의 BEGIN에 대응되는 END 구문은 하나이며 세미콜론(;)으로 끝나야 하고, END 다음에 CREATE 구문에서 사용된 함수나 프로시저의 이름을 써줘도 된다.
create procedure A as

begin

end A;
/
  • Declare로 선언된 익명블록인 경우 컴파일시 에러가 발생하면 에러 코드/메시지를 하단에 보여주지만 CREATE로 시작하는 함수나 프로시저는 오류 발생시 SHOW ERRORS(ERROR)로 확인해야 한다.


SQL> SHOW ERRORS

LINE/COL              ERROR

-------------  ----------------------------------------------------------------

10/13           PL/SQL: SQL Statement ignored

11/10           PLS-00201: ‘EMP.SAL' …..




PL/SQL 블록 구조


DECLARE 
     Variable declaration
BEGIN 
     Program Execution 
……
EXCEPTION 
     Exception handling
  ……
END;

[PL/SQL 블록 구조]


  • Declare절 : 선언부로써 필수는 아님, 변수 or 커서 등을 선언한다. 이름을 정의하고 재 사용할 PL/SQL 블록을 만들기 위해서는 CREATE구문을 사용해야 합니다.


- 변수선언예 

goodsNo  NUMBER(4);

isLogin    BOOLEAN;

ename    VARCHAR2(20);


    - 커서 선언 예

        Declare

           Cursor cEmp is select empno, ename from emp where deptno = 10;

Begin

……  

End;

/


  • Begin ~ End절 : 필수 요소이며 절차적 언어의 특징 및 SQL을 사용하여 비즈니스 로직을 구현 합니다.
  • Exception절 : 예외처리절(프로그래밍 언어의 CATCH구문) 입니다.


[PL/SQL 예문1]

-- FOR LOOP예제

SQL> SET SERVEROUTPUT ON

SQL> DECLARE

    BEGIN

      FOR x IN 1..10 LOOP

         DBMS_OUTPUT.PUT_LINE(x);

      END LOOP;

    END;

    /

1

10


-- FOR LOOP예제(REVERSE)

SQL> DECLARE

    BEGIN

      FOR x IN REVERSE 1..10 LOOP

         DBMS_OUTPUT.PUT_LINE(x);

      END LOOP;

    END;

    /

10

9



#PL/SLQ이란, #PLSQL, #PLSQL개요, #PLSQL작성방법, #PLSQL기본문범, #오라클, #오라클교육, #오라클학원, #오라클동영상, #ORACLE교육, #ORACLE학원, #ORACLE동영상, PL/SLQ이란, PLSQL, PLSQL개요, PLSQL작성방법, PLSQL기본문범, 오라클, 오라클교육, 오라클학원, 오라클동영상, ORACLE교육, ORACLE학원, ORACLE동영상, 
 

(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...