반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- ID중복
- StringWriter
- 아이디중복
- first-child
- include 지시자
- interrupted()
- 메모리스트림
- String char[] 형변환
- char[] String 형변환
- Linux셋팅
- 상관서브쿼리
- Daemon()
- Linux세팅
- include액션태그
- StringReader
- include지시자
- ObjectInputStream
- 동기화
- 리눅스세팅
- MemoryStream
- 리눅스셋팅
- interrupt()
- InputDialog
- first-of-child
- 상관 서브 쿼리
- 스레드그룸
- sleep()메소드
- isinterrupted()
- ThreadGroup()
- 표현 언어
Archives
- Today
- Total
다연이네
[days15] Stored Function (저장함수) 본문
반응형
PL/SQL의 stored function
PL/SQL 언어 중에서 Stored function은 Stored procedure와 개념이 동일하며, 동일한 기능을 가지고 있다.
한가지 차이점은 stored procedure는 로직을 처리만 하고 끝내지만,
stored function은 그 처리 결과를 사용자에게 반환하는 기능을 가지고 있는 점이 다르다.
==저장 함수 : 반환값이 있는 저장 프로시저라고 생각
create or replace function 함수명
()
return 리턴자료형;
is
begin
return (리턴값); --괄호 해도되고 안해도되고
exception
end;
주민번호를 입력받아 성별을 반환하는 함수
create or replace function uf_Gender
(
prrn varchar2
)
return varchar2
is
vgender varchar2(6) := '여자'; --남자 여자를 담을 변수
begin
if mod(substr(prrn,8,1),2)=1 then
vgender := '남자';
end if;
return vgender;
--exception
end;
-- Function UF_GENDER이(가) 컴파일되었습니다.
--남자 여자 출력하기
select name ,ssn, scott.uf_Gender(ssn) gender
from insa;
n 정수를 파라미터로 해서 1~n 합을 구해 반환하는 저장 함수
create or replace function uf_sum
(
pn number
)
return number
is
vsum number := 0;
vmin number :=1;
vmax number := pn;
begin
if pn < 1 then --음수인 경우
vmax:=1;
vmin:=pn;
end if;
for i in vmin..vmax
loop
vsum := vsum+i;
end loop;
return vsum;
--exception
end;
select scott.uf_sum(10)
from dual;
select scott.uf_sum(-10)
from dual;
uf_birth 주민번호를 매개변수로 해서 '2000.12.12 월요일'반환
create or replace function uf_birth
(
prrn varchar2
)
return varchar2
is
vbirthday varchar2(20);
vrrn06 varchar2(6);
vgender number(1);
vcentury varchar2(20);
begin
vrrn06 := substr(prrn, 0,6);
vgender := substr(prrn, 8,1);
vcentury :=case
when vgender in (1,2,5,6) then 19
when vgender in (3,4,7,8) then 20
else 18
end;
vbirthday := to_char(to_date(concat(vcentury, vrrn06)), 'YYYY.MM.dd DAY');
return vbirthday;
--exception
end;
select name ,scott.uf_birth(ssn)
from insa;
반응형
'Oracle' 카테고리의 다른 글
[days16] Trigger (트리거) (0) | 2020.11.20 |
---|---|
[days16] PL/SQL 블록 내에서 에러처리 (0) | 2020.11.19 |
[days15] 저장 프로시저의 파라미터 in, out, in out (0) | 2020.11.18 |
[days15] 저장 프로시저 예제 (0) | 2020.11.18 |
[days14] Stored Procedure (저장 프로시저) (0) | 2020.11.17 |
Comments