반응형
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
- InputDialog
- 동기화
- MemoryStream
- 표현 언어
- isinterrupted()
- 메모리스트림
- ID중복
- StringReader
- Linux셋팅
- interrupt()
- Linux세팅
- 리눅스세팅
- interrupted()
- Daemon()
- ThreadGroup()
- first-of-child
- char[] String 형변환
- 상관 서브 쿼리
- include액션태그
- ObjectInputStream
- 상관서브쿼리
- StringWriter
- include 지시자
- String char[] 형변환
- 아이디중복
- first-child
- 리눅스셋팅
- include지시자
- 스레드그룸
- sleep()메소드
Archives
- Today
- Total
다연이네
[days15] 저장 프로시저의 파라미터 in, out, in out 본문
반응형
저장 프로시저의 파라미터 : in(입력용), out(출력용), inout(입출력용)
1) 출력용 매개변수 테스트
create or replace procedure up_out_test
(
pin1 in number --만약10
,pin2 in number --20 넣으면
,pout1 out number --그 두갤 더해 밖으로 출력하도록
)
is
begin
pout1 := pin1 + pin2;
dbms_output.put_line('> 처리완료!!!');
--exception
end;
variable result number; --변수선언
exec UP_OUT_TEST(10,20,:result); --1번
print result; --2번
variable : 세션이 살아있는 동안 사용할 수 있는 변수를 선언할 떄 사용
세션 ? 한 사람이 db의 scott계정으로 접속하면 접속이 끊어질떄 까지 그 사람의 세션이 만들어짐
오라클에서 session이란 데이터베이스에 접속하여 일련의 SQL문을 실행한 후
데이터베이스로부터 종료하는 시점까지를 말한다.
-> 고로 result라고 하는 변수는 세션이 끊어질 때까지 살아있다.
IN/OUT 입출력 매개변수 사용 예) 주민번호(14) -> 앞의 6자리 반환
create or replace procedure up_inout_test
(
--prrn in varchar2 --주민번호 14자리 in(받아오기)
--,prrn6 out varchar2 이렇게 두개 선언하지 않고 바로 출력도 해주는 inout 동시에 쓰겠다
prrn in out varchar2
)
is
begin
prrn := substr(prrn,0,6); --이놈은 out용으로 사용하고는 앞자리 6자리 짤라서 넘기겠다는의미
--exception
end;
--Procedure UP_INOUT_TEST이(가) 컴파일되었습니다.
begin
:rrn6 := '980730-2031122';
end;
--1번
exec up_inout_test(:rrn6);
print rrn6;
--2번
회원가입할때 아이디 중복 체크 버튼
- 아이디를 사용할 수 있습니다.
- 사용중인 아이디입니다. / 아이디를 사용할 수 있습니다.
- empno가 아이디라고 가정
create or replace procedure up_empno_check
(
pempno in number
,pempnocheck out number --0(사용가능) / 1(사용불가) 반환
)
is
begin
select count(*) into pempnocheck --카운트 값을 pempnocheck에 저장, out으로 반환
from emp
where empno = pempno;
dbms_output.put_line(pempnocheck);
--exception
end;
variable empcheck number;
begin
up_empno_check(9999, :empcheck);
if(:empcheck=1) then
dbms_output.put_line('사용중');
else
dbms_output.put_line('사용가능');
end if;
end;
프로시저명 up_emp_logon 로그인
- id 존재하지 않으면 1 , id 존재하지만 pw 아니면 2, 다 맞으면 0
- id: empno, pw: ename
create or replace procedure up_emp_logon
(
pempno in number --id in
, pename in varchar2 --pwd in
, plogoncheck out number -- 1,2,0 out
)
is
vempno number(1) ; -- 0 1(아이디존재)
vename emp.ename%type;
begin
select count(*) into vempno
from emp
where empno = pempno;
if vempno = 0 then
plogoncheck := 1;
else
select ename into vename
from emp
where empno = pempno;
if pename = vename then
plogoncheck := 0;
else
plogoncheck := 2;
end if;
end if;
--exception
end;
var logoncheck number;
begin
up_emp_logon(7369, 'SMITH', :logoncheck);
dbms_output.put_line(:logoncheck);
end;
반응형
'Oracle' 카테고리의 다른 글
[days16] PL/SQL 블록 내에서 에러처리 (0) | 2020.11.19 |
---|---|
[days15] Stored Function (저장함수) (0) | 2020.11.18 |
[days15] 저장 프로시저 예제 (0) | 2020.11.18 |
[days14] Stored Procedure (저장 프로시저) (0) | 2020.11.17 |
[days14] Cursor (커서) (0) | 2020.11.17 |
Comments