Oracle 기초 저장 프로 세 스 와 사무
6777 단어 Oacle 기반
저장 과정 에서 사 무 를 어떻게 사용 합 니까?저장 과정 에서 여러 개의 추가,수정,SQL 문 구 를 동시에 실행 해 야 할 때 데이터 의 완전 성 을 확보 하기 위해 서 는 사 무 를 사용 해 야 합 니 다.사용 방식 은 PL-SQL 과 매우 비슷 하지만 차이 점도 있다.
--
CREATE OR REPLACE PROCEDURE Account_zhuanzhang(fromuser NUMBER,touser NUMBER,money NUMBER) IS
BEGIN
UPDATE account SET balance = balance - money WHERE id = fromuser;
UPDATE account SET balance = balance + money WHERE id = touser;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(' ');
ROLLBACK;
END Account_zhuanzhang;
호출 사무
SELECT * FROM ACCOUNT;
DECLARE
fromuser NUMBER := 1;
touser NUMBER := 2;
money NUMBER := &m;
BEGIN
account_zhuanzhang(fromuser,touser,money);
END;
2.자주 적 인 업무 처리:
자주 사무:0 개의 사무 로 시 작 된 독립 사무 처리 입 니 다.자주 적 인 사무 처 리 는 주 업무 처 리 를 중단 할 수 있다.즉,자신의 저장 과정 내부 의 사 무 를 처리 하고 자주 적 인 사 무 를 처리 한 후에 주 업무 처 리 를 회복 할 수 있다.
PRAGMA AUTONOMOUS_TRANSACTION; --자주 사무 로 정의 되 며,기타 사무 제출,스크롤 백 의 영향 을 받 지 않 습 니 다.
예:
-- : ,
CREATE OR REPLACE PROCEDURE PRO_DEPT_ADD(DEPTNO NUMBER,DNAME VARCHAR2,LOC VARCHAR2) AS
PRAGMA AUTONOMOUS_TRANSACTION; -- , ,
BEGIN
INSERT INTO DEPT (DEPTNO, DNAME, LOC) VALUES (DEPTNO, DNAME, LOC);
ROLLBACK; -- , 。
END;
-- , , ,
CREATE OR REPLACE PROCEDURE PRO_DEPT_ADD2 AS
BEGIN
INSERT INTO DEPT (DEPTNO, DNAME, LOC) VALUES (60, 'test1', 'test2');
PRO_DEPT_ADD(70, 'test', 'test'); -- , 。 ,
COMMIT;
END;
주 트 랜 잭 션 호출:
BEGIN
pro_dept_add2(); -- , 60 , 70 。 !
END;
자주 사 무 를 정리 하 다.
1.자주 적 인 사무 처리 결과 의 변 화 는 주 업무 처리 의 상태 나 최종 설정 에 의존 하지 않 습 니 다.
2.자주 적 인 사무 처리 가 제출 하거나 스크롤 백 할 때 주 업무 처리 결과 에 영향 을 주지 않 습 니 다.
3.자주 사무 제출 이 제출 되면 이 자주 사무 처리 결과 의 변 화 는 다른 사무 처리 에 있어 과제 이다.업 데 이 트 된 정보 에 접근 할 수 있 으 며,주 업무 처리 제출 을 기다 릴 필요 가 없다 는 뜻 이다.
4.자주 적 인 사무 처 리 는 다른 자주 적 인 사무 처 리 를 시작 할 수 있다.