본문 바로가기

DB

(52)
Oracle PL/SQL[프로시저] [RETURN] RETURN 함수에서 사용한 RETURN문을 프로시저에서도 사용할수 있는데, 그 쓰임새와 처리 내용은 다르다. 함수에서는 일정한 연산을 수행하고 결과 값을 반환하는 역할을 했지만, 프로시저에서는 RETURN 문을 만나면 이후 로직을 처리하지 않고 수행을 종료 , 즉 프로시저를 빠져나가 버린다. 반복문에서 일정 조건에 따라 루프를 빠져나가기 위해 EXIT 를 사용하는 것과 유사하다. 예를 프로시저에서 세번째 매개변수인 최소 급여값은 반드시 1000이상이어야 하며 , 이보다 작은 값이 들어오면 INSERT 나 UPDATE를 수행하지 않아야 한다고 해보자 그렇다면 최소 급여값을 체크해서 1000보다 작으면 아무것도 처리하지 않아야 하는데, 이럴때 RETURN 문을 사용하면 편리하다. CREATE OR REPL..
Oracle PL/SQL[프로시저] 함수는 특정 연산을 수행한뒤 결과 값을 반환하지만 프로시저는 특정한 로직을 처리하기만 하고 결과 값을 반환하지는 않는 서브 프로그램이다. 일반적으로 프로젝트 현장에서는 시스템 설계가 끝난후 업무를 분할하고 이 분할한 업무 단위로 로직을 구현해야 하는데 개별적인 단위 업무는 주로 프로시저를 구현해 처리한다. 즉 테이블에서 데이터를 추출해 입맛에 맞게 조작하고 그결과를 다른 테이블에 다시 저장하거나 갱신하는 일련의 처리를 할때 주로 프로시저를 사용한다. CREATE OR REPLACE PROCEDURE 프로시저 이름 (매게변수1[IN|OUT| IN OUT] 데이터 타입 [ := 디폴트 값], 매개변수2[IN|OUT| IN OUT] 데이터 타입 [ := 디폴트 값], ..) IS [AS] 변수 ,상수 등 선언..
Oracle PL/SQL 의 사용자 정의함수 함수생성 SQL 함수는 오라클에서 제공하는 내장함수이고 여기에서 말하는 함수는 사용자가 직접 로직을 구현하는 사용자 정의 함수를 말한다. SQL 함수편에서 배웠듯이 함수란 매개변수를 받아 뭔가를 처리해 그 결과를 번환하는 데이터베이스 객체이며 사용자 정의 함수도 마찬가다. 오라클에서 제공하는 빌트인SQL 함수가 많긴 하지만, 프로젝트를 진행하다보면 프로젝트 성격에 맞게 다양한 함수를 직접 구현해 사용해야 할 때가 많다. 먼저 함수의 구문부터 살펴보자. CREATE OR REPLACE FUNCTION 함수이름(배개변수1,매개변수2) RETURN 데이터타입; IS[AS] 변수,상수 등 선언 BEGIN 실행부 RETURN 반환값; [EXCEPTION 예외 처리부] END [함수이름] CREATE OR REPL..
Oracle(PL/SQL) 제어문 절차적 언어인 PL/SQL 은 다른 프로그래밍 언어에서 제공하는 다양한 처리문들을 포함하는데 이를 통칭해 PL/SQL 제어문이라고 한다. IF 조건 THEN 조건 처리; IF IF조건 THEN 조건 처리1; ELSE 조건 처리2; END IF IF조건1 THEN 조건처리1; ELSEIF 조건2 THEN 조건 처리2; ELSE 조건처리N; END IF; IF 다음에 오는 조건값이 ,측 TRUE 이면 해당 조건 처리 문장이 실행된다. 조건 다음에는 THEN을 문장 맨 마지막에는 END IF를 명기해야한다 조건이 1개 이상이면 ELSE IF 가 아닌 ELSIF를 사용한다. DECLARE VN_NUM1 NUMBER := 1; VN_NUM2 NUMBER := 2; BEGIN IF VN_NUM1 >= VN_NUM2..
Oracle(PL/SQL) 구성요소 변수는 다른 프로그래밍 언어에서 사용하는 변수와 개념이 같으며 선언부에서 변수 선언을 하고 실행부에서 사용한다. 변수 선언 방식은 다음과 같다. 변수명 데이터타입 := 초깃값; 변수 선언과 동시에 초깃값을 할당할수 있는데, 초깃값을 할당하지 않으면 데이터 타입과 상관없이 NULL 이된다. 변수로 선언할 수 있는 테이터 타입은 크게 두가지로 구분할 수 있는데, 하나는 SQL 데이터 타입이고 다른 하나는 PL/SQL 데이터 타입이다. 사실 이 두가지를 엄격히 구분하지는 않는다. 왜냐하면 PL/SQL 데이터 타입에는 SQL 데이터 타입이 포함되어 있기 때문이다. PL/SQL 데이터 타입인 BOOLEAN, PLS_INTEGER,BINARY_INTEGER 등에 대해 알아 보자. BOOLEAN 타입은 어떤 값이 참..
Oracle(PL /SQL ) 기본구조 PL / SQL 소스 프로그램의 기본 단위를 블록 이라고 하는데, 블록은 선언부, 실행부, 예외 처리 부로 구성된다. 이 블록은 다시 이름이 없는 블록과 이름이 있는 블록으로 구분할 수 있는데 전자에 속하는 것이 익명 블록이며 , 함수, 프로시저, 패키지 등이 후자에 속한다. PL/ SQL 의 블록 구조는 다음과 같다. 이름부 IS(AS) 선언부 BEGIN 실행부 EXCEPTION 예외 처리부 END; 이름부 : 블록의 명칭이 오는데, 생략할 때는 익명 블록이 된다. 선언부: DECLARE로 시작되며 , 실행부와 예외 처리부에서 사용할 각종 변수, 상수, 커서 등을 선언한다. 중요한 점은 변수 선언이나 실행부와 예외 처리부에서 사용하는 각종 문장의 끝에 반드시 세미콜론을 찍어야 한다는 것이다 세미콜론이 ..
Oracle(표현식) 표현식 이란 한개 이사으이 값과 연산자 , SQL 함수 등이 결합된 식이다. 이 절에서는 특정 조건에 따라 값을 변경해서 보이는 CASE표현식에 대해 알아보자. CASE WHEN 조건1 THEN 값1 WHEN 조건2 THEN 값2 ELSE 기타값 END SELECT ROWNUM,EMPLOYEE_ID,SALARY, CASE WHEN SALARY 5000 AND SALARY
Oracle(의사컬럼) 의사컬럼이란 테이블의 컬럼처럼 동작하지만 실제로 테이블에 저장되지 않는 컬럼을 말한다 SELECT 문에서는 의사컬럼을 사용할수 있지만, 의사컬럼 값을 INSERT , UPDATE , DELETE 할수 없다. NEXTVAL , CURRVAL 도 의사컬럼의 일종이다. 대표적인 의사컬럼의 종류를 열거하면 다음과 같다. CONNECT_BY_ISCYCLE, CONNECT_BY_ISLEAF,LEVEL 계층형 쿼리에서 사용하는 의사컬럼이다. NEXTVAL , CURRVAL 시퀀스에서 사용하는 의사컬럼이다. ROWNUM,ROWID ROWNUM은 쿼리에서 반환되는 각 로우들에 대한 순서 값으 나타내는 의사컬럼이다. SELECT ROWNUM , EMPLOYEE_ID FROM EMPLOYEES; 테이블에 데이터가 많으면 S..