oracle 저장 프로세스와 트리거 실험 총결

2106 단어 데이터베이스
(1) JXGL 데이터베이스에 저장 프로세스를 만들고 실행하며 S표에서 모든 여성의 정보를 조회한다.
1. 저장 프로세스 생성
create or replace procedure prFemale(
pSno out S_RZ0119.Sno%type,
pSname out S_RZ0119.Sname%type,
pSage out S_RZ0119.Sage%type,
pSsex out S_RZ0119.Ssex%type,
pSdept out S_RZ0119.Sdept%type,
out_var out sys_refcursor
)
is
begin
open out_var for select Sno,Sname,Sage,Ssex,Sdept into pSno,pSname,pSage,pSsex,pSdept
from S_RZ0119
where Ssex=‘ ‘;
end;
/

2. 저장 프로세스 실행
var abc refcursor
declare
pSno varchar2(11);
pSname varchar2(20);
pSage number(2);
pSsex varchar2(9);
pSdept varchar2(20);
begin
prFemale(pSno,pSname,pSage,pSsex,pSdept,:abc);
end;
/

//인쇄
print :abc;

(2) JXGL 데이터베이스에 저장 프로세스를 만들고 실행하며 S표에서 학번을 따라 이 학생의 이름과 나이를 조회하고 되돌려준다.
1. 학번별로 학생 이름과 나이를 조회하는 과정 만들기
create or replace procedure searchS(
pSno in S_RZ0119.Sno%type,
pSname out S_RZ0119.Sname%type,
pSage out S_RZ0119.Sage%type
)
is
begin
select Sname,Sage into pSname,pSage 
from S_RZ0119
where Sno=pSno;
end;
/

2. 저장 프로세스 실행
declare
pSname varchar2(20);
pSage number(20);
begin
searchS(‘131102‘,pSname,pSage);
dbms_output.put_line(pSname);
dbms_output.put_line(pSage);
end;
/

(3) JXGL 데이터베이스에 트리거를 만들어 S표 중학생의 나이가 8~45세 사이임을 보증한다.
1. 나이 트리거 만들기
create or replace trigger tri_SageWrong
before insert
on S_RZ0119
for each row
begin
if((:new.Sage<8) or (:new.Sage>45)) then
RAISE_APPLICATION_ERROR(-20600,‘            8-45  !‘);
end if;
end;
/

2. 테스트
insert into S_RZ0119 values (‘130105‘,‘   ‘,‘ ‘,6,‘     ‘);

(4) JXGL 데이터베이스에 트리거를 만들고 학생이 어떤 과목을 선택했을 때 C표에서 이 과목을 삭제할 수 없다.
1. 과정 트리거 만들기
create or replace trigger tri_CourseDelet
before delete
on C_RZ0119
for each row
declare CCount number;
begin
select count(*) into CCount from SC_RZ0119 where Cno=:old.Cno;
if CCount>0 then
RAISE_APPLICATION_ERROR(-20601,‘         ,    !‘);
end if;
end;
/

2. 테스트
delete from C_RZ0119 where Cno=‘C001‘;

좋은 웹페이지 즐겨찾기