--创建触发器(行级触发器)
트리거 tri_update_emp_bak 생성 또는 교체
업데이트 후
emp_bak에서
각 행에 대해 --每更新一行 就触发一次
시작하다
--oracle 이면 对触发器 也提供了特殊的对象 :NEW :OLD 来访问 更新前后的数据
dbms_output.put_line('更新后' || :NEW.sal);
dbms_output.put_line('更新前' || :OLD.sal);
업데이트하는 경우
종료하면;
삽입하는 경우
끝;
--创建触发器(行级触发器)(전置)
트리거 tri3_update_emp_bak 생성 또는 교체
업데이트 전
emp_bak에서
각 행에 대해 --每更新一行 就触发一次
시작하다
--oracle 이면 对触发器 也提供了特殊的对象 :NEW :OLD 来访问 更新前后的数据
dbms_output.put_line('更新后' || :NEW.sal);
dbms_output.put_line('更新前' || :OLD.sal);
끝;
emp_bak에서 *를 선택하세요.
emp_bak set sal = 1000 업데이트, 여기서 empno는 (7788)
--创建触发器(表级触发器)
--//表级别触发器里face 不允许使用 :NEW :OLD 变weight
트리거 tri2_update_emp_bak 생성 또는 교체
업데이트 후
emp_bak에서
시작하다
-- dbms_output.put_line('更新后' || :NEW.sal);
--dbms_output.put_line('更新前' || :OLD.sal);
끝;
--创建触发器(行级触发器)
트리거 tri4_update_emp_bak 생성 또는 교체
Sal 업데이트 후
emp_bak에서
각 행에 대해 --每更新一行 就触发一次
시작하다
--oracle 이면 对触发器 也提供了特殊的对象 :NEW :OLD 来访问 更新前后的数据
dbms_output.put_line('更新后' || :NEW.sal);
dbms_output.put_line('更新前' || :OLD.sal);
끝;
테이블 사용자 정보 생성
(
사용자 ID 번호(4) 기본 키,
사용자 이름 varchar2(20)
)
테이블 addrinfo 생성
(
addrid 번호(4) 기본 키,
이름 추가 varchar2(20),
사용자 ID 번호(4)는 사용자 정보(userid)를 참조합니다.
)
userinfo 값(1,'lee4')에 삽입
addrinfo 값에 삽입 (1,'湖북무汉',1)
addrinfo에서 *를 선택하세요
userid = 1인 userinfo에서 삭제
--级联删除
트리거 tri_userinfo_delete 생성 또는 교체
삭제하기 전에
사용자 정보에
각 행마다
시작하다
userid = :OLD.userid인 addrinfo에서 삭제합니다.
--에 삽입
끝;
dept에서 *를 선택하여 dept_bak 테이블을 생성합니다.
myview 보기 만들기 또는 바꾸기
~처럼
a.empno,a.ename,a.sal,b.dname을 선택합니다.
emp a 내부 조인 부서 b에서
a.deptno = b.deptno에
myview에서 *를 선택하세요
myview 세트 sal = 1000,dname='aaaaa' 업데이트, 여기서 empno = 7499
--替代触发器는 只能是行级的으로 사용됩니다.
--替代触发器 特点是 真正的操작품已经 变成了一个动작품而已 功能由触发器来完成
트리거 tri_myview 생성 또는 교체
업데이트 대신
마이뷰에서
시작하다
dbms_output.put_line('删除操작품执行了。。。');
emp set sal 업데이트 = :NEW.sal 여기서 empno = :OLD.empno;
업데이트 부서 세트 dname = :NEW.dname 여기서 dname = :OLD.dname;
--empno = :OLD.empno인 경우 emp에서 삭제;
끝;
emp에서 *를 선택하십시오.
부서에서 *를 선택하십시오.
emp_bak set ename ='aaaa',sal = 10000 업데이트, 여기서 empno는 (7788)
--系统包
-- 产生随机数
**** **** **** ****
--dbms_random.value 0-1
--dbms_random.random 随机整数
이중에서 dbms_random.value를 선택하십시오.
프로시저 proc_cardno(mycardno out varchar2) 생성 또는 교체
~처럼
임시카드 varchar2(50);
카드번호 varchar2(19);
시작하다
임시카드:= dbms_random.value;
카드번호:=substr(임시카드,2,4)||' '||substr(tempcard,6,4)||' '||substr(tempcard,10,4)||' '||substr(tempcard,14,4);
mycardno:=카드번호;
-- dbms_output.put_line(임시카드);
-- dbms_output.put_line(카드번호);
끝;
--使useUTL_FILE包读写文件
MY_DIR 디렉터리를 'd:temp'로 생성합니다.
MY_DIR2 디렉토리를 'd:temp2'로 생성합니다.
선언하다
--정의문件对象
myfile utl_file.file_type;
--정확한 수량을 사용하여 광고를 게재합니다.
linestr varchar2(200);
시작하다
--打开文件
myfile:= utl_file.fopen('MY_DIR','oracle.log','r');
--进行读取(循环)
고리
utl_file.get_line(myfile,linestr);
dbms_output.put_line(linestr);
끝 루프;
예외
그럼 다른 사람들은 언제
utl_file.fclose(myfile);
dbms_output.put_line('读取完毕!');
끝;
선언하다
--정의문件对象
myfile utl_file.file_type;
--정확한 수량을 사용하여 광고를 게재합니다.
linestr varchar2(200);
시작하다
--打开文件
myfile:= utl_file.fopen('MY_DIR','oracle.log','a');
--追加数据
--utl_file.get_line(myfile,linestr);
utl_file.put_line(myfile,'你好,这是새로운 내용',true);
utl_file.fclose(myfile);
예외
그럼 다른 사람들은 언제
utl_file.fclose(myfile);
dbms_output.put_line('读取完毕!');
끝;
--拷贝
선언하다
--정의문件对象
소스파일 utl_file.file_type;
대상파일 utl_file.file_type;
--정확한 수량을 사용하여 광고를 게재합니다.
linestr varchar2(200);
시작하다
--打开文件
sourcefile:= utl_file.fopen('MY_DIR','oracle.log','r');
targetfile:= utl_file.fopen('MY_DIR2','copy.txt','a');
--进行读取(循环) 并且写入到 새로운 문자 페이지
고리
utl_file.get_line(sourcefile,linestr);
utl_file.put_line(targetfile,linestr,true);
-- dbms_output.put_line(linestr);
끝 루프;
예외
남들은 그때
utl_file.fclose(소스파일);
utl_file.fclose(대상파일);
dbms_output.put_line('拷贝完毕!');
끝;
本文来自CSDN博客,转载请标明处: http://blog.csdn.net/hzz1988/archive/2009/12/30/5107869.aspx