PL SQL

PL/SQL Quiz1 대비

n.han 2016. 7. 5. 17:14
  • PL/SQL의 장점 : 프로시서 생성자와 SQL의 통합, 모듈식 프로그램, 이식성, 예외 처리 가능
  • DECLARE는 선택 사항, BEGIN은 필수, EXCEPTION은 선택 사항, END;/는 필수 사항
  • 프로시저란 리턴 값을 하나 이상 가질 수 있는 프로그램을 말한다
  • 함수란 리턴 값을 반드시 반환해야 하는 프로그램을 말한다
  • 패키지란 하나 이상의 프로시저, 함수, 변수, 예외 등의 묶음을 말한다.
  • 지정된 이벤트가 발생하면 자동으로 실행하는 블록을 트리거라고 한다.
  • PL/SQL Block의 종류는 이름 있는 블록(프로시서, 함수, 패키지, 트리거), 익명 블록으로 나뉜다.
  • 변수의 선언은 DECLARE절에서만 가능하다. 그리고 BEGIN 섹션에서 새 값이 할당될 수 있다.
  • 단일 값을 저장하고 있는 변수 : 스칼라 변수
  • 컬럼의 데이터 양식을 참조하는 데이터 타입 : 참조 변수
  • %TYPE를 통해서 해당 컬럼을
  • NOT NULL과 CONSTANT는 꼭 초기화를 해주어야 한다.
  • PL/SQL에서 사용 가능한 SQL은 Query, DML, TCL이다.
    - DDL (CREATE, DROP, ALTER, TRUNCATE …), DCL (GRANT, REVOKE) 명령어는 동적 SQL을 이용할 때만 사용 가능하다.
  • PL/SQL SELECT문은 해당 SELECT의 결과를 PL/SQL Engine으로 보낸다. 이를 캐치하기 위한 변수를 DECLARE해야 하고, INTO절을 꼭 선언하여 넣을 변수를 꼭 표현해주어야 SELECT 문장은 반드시 한 개의 행이 검색되어야 한다. 그리고 이를 INTO절을 꼭 사용해야한다. 또한 검색되는 행이 없으면 문제가 발생한다.
  • SQL%ROWCOUNT : 바로 전 명령문에 의하여 영향 받는 ROW들의 개수가 저장되어 있다.
  • 이름 지정 모호성 : 변수 명과 테이블의 컬럼 명과 같은 경우, 테이블의 컬럼으로 우선하여 수행한다.
  • - IF NULL : NULL의 비교는 항상 NULL이 때문에, ELSE 이하 문만 수행된다
  • CASE 표현식 : 단순하게 조건문에 따른 값을 대입할 때 사용된다. THEN절에 특정 값이 사용될 때 필요하다
  • CASE 조건문 : THEN 절에서 단순한 값이 아닌 PL/SQL (명령문)을 실행 시키고자 하는 경우에 CASE 조건문을 사용해야 한다. CASE 조건문은 끝이 END CASE로 끝난다.
  • For Loop : lower_bound..upper_bound이므로, lower_bound upper_bound 보다 큰 경우 FOR 루프를 진입하지 않는다. 따라서 REVERSE 키워드를 넣으면 반대로 counter가 내려간다.
  • 루프 안에 카운터만 참조해야 하며, 루프 밖에는 카운터가 정의되어 있지 않다. 또한 카운터를 할당 대상으로 참조하는 것을 피해야하며, 루프의 상한이나 하한을 NULL일 수 없다
  • 테이블이름%ROWTYPE : 참조 타입인 %ROWTYPE이 더 많이 사용될 수 있으나, 필요하다면 레코드 타입을 선언하고 사용할 수 있다. 다음은 %ROWTYPE를 활용하여 emp 테이블의 한 줄의 ROW rec_emp 변수에 저장한 예제이다
  • 이 레코드 구조체의 제약은 검색되는 행의 개수가 반드시 하나여야 한다. 없어도 안되고, 두개 이상이어도 안된다.
  • PL/SQL Record 사용 : 위와 같은 경우 한 ROW을 모두 조합하여 가지고 온다. 하지만 특정 컬럼들만으로 레코드 구조체를 만들고 싶은 경우 PL/SQL Record를 사용하면 된다.