PL/SQL 에 매우 약한 나를 위해 남기는 펑션 만들기 기초문법!
기본적으로 펑션은 아래의 형태를 갖는다.
CREATE [OR REPLACE] FUNCTION FUNCTION_NAME [(argument1 [mode1] DATA_TYPE, argument2 [mode2] DATA_TYPE, ~~~반복~~~)] RETURN 타입 --세미콜론을 넣지 않는다. 넣으면 컴파일 에러!! IS 변수 변수타입; BEGIN PL/SQL 작성; END;
OR REPLACE
붙여도 상관없고 안 붙여도 상관은 없지만 붙이는 경우 이미 존재하는 펑션명이라면
기존 펑션의 내용을 지우고 재생성(이라기보다 수정?) 한다.
물론 붙이지 않는다면 해당 펑션명이 이미 존재한다는 에러를 뿜어내고 종료.
FUNCTION_NAME
당연하게도 펑션명인데 이름의 길이에는 제한이 있는 듯 하다.
아까 전에 엄청나게 길게 생성하려고 했더니 에러가 났다.
ARGUMENT1, ARGUMENT2~~~
펑션을 실행할 때에 받을 변수를 선언한다.
선언하는 변수들에는 mode 를 지정할 수 있는데 해당 옵션의 종류는 다음과 같다.
IN - 입력 변수
OUT - 출력 변수
IN OUT - 입출력 변수
그러나 나는 IN 만 사용해봤기 때문에 다른 건 잘 모르겠다.
기본적으로 아무것도 적지 않는다면 IN 이 되는 것 같다.
그리고 이건 그냥 사족이지만 프로젝트에서 잘 살펴보면
보통 아규먼트로 받는 변수명 앞에는 I_ 를 많이 붙이고
출력 변수로 사용할 변수명 앞에는 O_ 를 많이 붙이고
프로시저 내에서 선언하는 내부 변수들에는 V_ 를 많이 붙이는 것 같았다.
그리고 넘겨받는 아규먼트가 없다면 펑션명 뒤에 (괄호)를 붙이지 않아야 한다.
DATA_TYPE
해당 변수의 데이터 타입을 지정한다.
테이블명.컬럼명%TYPE 을 입력하면 해당 테이블의 해당 컬럼의 TYPE 을 참조한다.
RETURN
리턴 할 값의 데이터 타입을 지정한다.
변수값으로 받는 데이터 타입과 동일한 형식으로 작성할 수 있다.
IS 변수 변수타입;
이 곳에는 펑션 내부에서 사용할 변수들을 선언할 수 있다.
다음과 같이 사용한다.
V_TEMP1 VARCHAR2(20);
↑ 제일 뒤에 땀(세미콜론;)을 붙이는 것을 잊지 말자.
BEGIN ~ END;
BEGIN 과 END 사이에 PL/SQL 을 작성하면 된다.
마찬가지로 한 문장이 끝난다면 반드시 땀(세미콜론;)을 붙이는 것을 잊지 말자.
간단한 펑션 만들기 예제를 하나 올리고 이 포스팅은 끝!
CREATE OR REPLACE FUNCTION GET_TODAY_DATE_YYYYMMDD RETURN VARCHAR2 IS V_DATE VARCHAR2(8); BEGIN SELECT TO_CHAR(SYSDATE, 'YYYYMMDD') INTO V_DATE FROM DUAL; RETURN V_DATE; END; --------------------------------------------- SELECT GET_TODAY_DATE_YYYYMMDD() FROM DUAL; RESULT : 20180317
'개발 > 오라클' 카테고리의 다른 글
오라클 - 정규표현식 함수 REGEXP_REPLACE() (0) | 2018.04.01 |
---|---|
오라클 - 정규표현식 함수 REGEXP_SUBSTR() (0) | 2018.04.01 |
오라클 - SQLGate2010 으로 function (펑션) 생성 시 주의, ORA-06575 : 패키지 또는 함수 ~ 은 부적당한 상태입니다. (0) | 2018.03.17 |
오라클 - 임의의 순서로 정렬하기 order by decode, order by case (6) | 2018.03.17 |
댓글