1. 함수
1. 함수
[ 함수와 프로시저 비교 ]
1) 함수
- 반드시 매개 변수가 있어야 한다. (갯수는 0개 이상, 일반적으로는 1개 이상)
- 반드시 반환값이 있어야 한다.
2) 프로시저
- 반드시 매개 변수가 있어야 한다. (갯수는 0개 이상, 일반적으로는 1개 이상)
- 반환값이 0개 이상 (OUT 파라미터 x N개 생성)
[ 함수 작성 방법 ]
<Java의 메소드 작성 방법과 유사하다.>
--JAVA 방법
public int test(int num1, int num2) { return num1 }
--DATABASE 방법
CREATE OR REPLACE FUNCTION test (num1 NUMBER, num2 NUMBER) RETURN NUMBER;
-- 작성 예시)
-- 함수 생성
CREATE OR REPLACE FUNCTION fnSum (
pnum1 NUMBER,
pnum2 NUMBER
) RETURN NUMBER;
IS
BEGIN
RETURN pnum1 + pnum2;
END fnSum;
-- 함수 호출
DECLARE
vresult NUMBER;
BEGIN
vresult := fnSum(100, 200);
DBMS_OUTPUT.PUT_LINE(vresult);
DBMS_OUTPUT.PUT_LINE(fnSum(200, 300));
END;
----> 300
----> 500
[ 함수 활용 예제 ]
- 함수는 ANSI-SQL에서도 사용이 가능하다.
-- 예시1)
-- 위에서 작성 했던 예시 함수를 ANSI-SQL에서 사용하기
SELECT NAME, BASICPAY, SUDANG, fnSum(BASICPAY + SUDANG) FROM TBLINSA;
-- 예시2)
SELECT NAME, BUSEO, JIKWI,
CASE
WHEN SUBSTR(SSN, 8, 1) = '1' THEN '남자' --주민번호 뒷자리 첫번째 자리가 1이면 남자
WHEN SUBSTR(SSN, 8, 1) = '2' THEN '여자' --주민번호 뒷자리 첫번째 자리가 2이면 여자
END AS GENDER
FROM TBLINSA;
-- 위 코드를 함수로 만들기
CREATE OR REPLACE FUNCTION fnGender(
pssn VARCHAR2
) RETURN VARCHAR2
IS
BEGIN
return CASE
WHEN SUBSTR(pssn, 8, 1) = '1' THEN '남자' --주민번호 뒷자리 첫번째 자리가 1이면 남자
WHEN SUBSTR(pssn, 8, 1) = '2' THEN '여자' --주민번호 뒷자리 첫번째 자리가 2이면 여자
END
END;
-- 함수 호출
SELECT NAME, BUSEO, JIKWI, fnGender(ssn) FROM TBLINSA;
[ 요약 ]
저장 함수: ANSI-SQL을 보조 하는 역할
저장 프로시저: 행동의 단위(메소드 개념)
MEMO>
# RETURN (반환값)을 사용하면 함수, OUT (파라미터) 을 사용하면 프로시저라고 생각하라는데 모르겠는데??
'인천일보아카데미 > - 학습일지' 카테고리의 다른 글
[학습일지]JAVA교육일지 61일차 (0) | 2022.06.30 |
---|---|
[학습일지]JAVA교육일지 60일차 (0) | 2022.06.30 |
[학습일지]JAVA교육일지 58일차 (0) | 2022.06.28 |
[학습일지]JAVA교육일지 54일차 (0) | 2022.06.25 |
[학습일지]JAVA교육일지 53일차 (0) | 2022.06.24 |