데이터베이스 저장 프로세스, 트리거, 커서, 서열 총결
3244 단어 데이터베이스 학습
대형 데이터베이스 시스템에서 특정한 기능을 완성하기 위한 SQL 문장 집합을 데이터베이스에 저장하고 첫 번째 컴파일을 거친 후에 다시 호출하면 다시 컴파일할 필요가 없다. 사용자는 저장 프로세스의 이름을 지정하고 파라미터를 제시한다(이 저장 프로세스에 파라미터가 있다면).저장 프로세스는 데이터베이스 중의 중요한 대상으로 어떤 디자인이 좋은 데이터베이스 응용 프로그램이든 저장 프로세스를 사용해야 한다.
구문:
create [or replace] procedure name(parameter in type, parameter out type)
is/as
[변수 이름] type
begin
저장 프로시저
end;
/
1) in은 입력, out은 출력
2) 저장 과정 중 is와 as는 모두 같다
3) 변수를 선언할 때 number일 경우 크기를 지정하지 않고 varchar2일 경우 지정해야 함
저장 시 커서를 사용하려면 다음과 같이 하십시오.
유표
SQL 문의 실행 결과를 저장할 수 있는 데이터 버퍼가 있습니다.모든 커서 구역에 하나의 이름이 있는데 사용자는 SQL 문구로 하나하나 커서에서 기록을 얻고 주 변수에 부여하여 주 언어에 의해 진일보 처리할 수 있다.
저장 중에 커서를 선언하려면 다음과 같이 하십시오.
cursor cursor_name is select column_name from table_name where condition;
순환 사용:
open cursor_name;
loop
fetch cursor_name into variable1, variable2;
exit when cursor_name%notfound;
(operation on variables)
end loop;
close cursor_name;
예:
create or replace procedure l_procedure
is
leave_num number;
student_num varchar2(16);
cursor c_studentnum is select distinct studentnum from leave_apply;
begin
open c_studentnum;
loop
fetch c_studentnum into student_num;
exit when c_studentnum%notfound;
select count(l.applyNum) into leave_Num
from leave_apply l
where l.studentnum = student_Num;
insert into leave_apply_stat(studentnum,leavenum) values(student_Num, leave_Num);
end loop;
close c_studentnum;
commit;
end;
--------------------------------------------------------------------------------------------------
트리거
SQL 서버는 프로그래머와 데이터 분석원에게 데이터의 완전성을 확보하는 방법을 제공합니다. 이것은 테이블 이벤트와 관련된 특수한 저장 프로세스입니다. 이 프로세스의 실행은 프로그램이 호출하거나 수동으로 시작하는 것이 아니라 이벤트가 촉발합니다.
create or replace trigger [trigger name]
before/after insert/update/delete on [table name]
for each row(행 트리거)
when (판단 조건)
declare
[variable name] type;
begin
end;
/
1) before/after 는 트리거가 작업이 완료되기 전/후에 트리거되어야 하는 것을 가리킨다
2) insert/update/delete는 트리거를 트리거하는 조건을 가리킨다
3) for each row는 이 트리거가 하나의 줄 트리거임을 의미하며, 줄마다 이 트리거를 트리거합니다.
(foreach row를 추가하는 것과 추가하지 않는 것의 차이점은 다음과 같다. 추가한 후에 업데이트가 여러 줄을 한 번에 업데이트하면 한 줄의 변경 사항이 트리거를 촉발한다. 만약에 추가하지 않으면 몇 줄을 수정하든 표에 대한 조작은 한 번, 트리거만 촉발한다)
4) 기본 테이블의 조작으로 인한 트리거는 기본 테이블이 변경된 후에 이 테이블에 접근할 수 없습니다.
시퀀스 사용:
create sequence [sequence name] start with 1 increment by 1 maxvalue 100 minvalue 1 no circle cache 20;
1) start with는 시퀀스 시작 값을 나타냅니다.
2) increment 대표 시퀀스 자체 부가가치
3) maxvalue 최대값,minvalue 최소값,nocircle 순환 허용 여부,cache는 미리 생성된 메모리에 저장된 시퀀스 값 개수를 가리킨다
예:
create sequence messagenum_seq start with 0 increment by 1;
create or replace trigger tri_update
after update of state on leave_apply
for each row
declare
messagenum number;
content varchar2(128);
begin
select messagenum_seq.nextval into messagenum from dual;
content := ' ,' || :new.state;
insert into message(messagenum, content, applynum, studentnum, time) values(messagenum, content, :new.applynum, :new.studentnum, sysdate());
end;
/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
데이터베이스 저장 프로세스, 트리거, 커서, 서열 총결사용자는 저장 프로세스의 이름을 지정하고 파라미터를 제시한다(이 저장 프로세스에 파라미터가 있다면).저장 프로세스는 데이터베이스 중의 중요한 대상으로 어떤 디자인이 좋은 데이터베이스 응용 프로그램이든 저장 프로세스를...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.