--创建触发器(行级触发器)
crear o reemplazar el disparador tri_update_emp_bak
después de la actualización
en emp_bak
para cada fila --每更新一行 就触发一次
comenzar
--oracle 里面 对触发器 也提供了特殊的对象 :NEW :OLD 来访问 更新前后的数据
dbms_output.put_line('更新后' || :NEW.sal);
dbms_output.put_line('更新前' || :OLD.sal);
si actualiza entonces
terminar si;
si inserta
fin;
--创建触发器(行级触发器)(前置)
crear o reemplazar el disparador tri3_update_emp_bak
antes de la actualización
en emp_bak
para cada fila --每更新一行 就触发一次
comenzar
--oracle 里面 对触发器 也提供了特殊的对象 :NEW :OLD 来访问 更新前后的数据
dbms_output.put_line('更新后' || :NEW.sal);
dbms_output.put_line('更新前' || :OLD.sal);
fin;
seleccione * de emp_bak
actualizar emp_bak establecer sal = 1000 donde empno en (7788)
--创建触发器(表级触发器)
--//表级别触发器里面 不允许使用 :NUEVO :VIEJO 变量
crear o reemplazar el disparador tri2_update_emp_bak
después de la actualización
en emp_bak
comenzar
-- dbms_output.put_line('更新后' || :NEW.sal);
--dbms_output.put_line('更新前' || :OLD.sal);
fin;
--创建触发器(行级触发器)
crear o reemplazar el disparador tri4_update_emp_bak
después de la actualización de sal
en emp_bak
para cada fila --每更新一行 就触发一次
comenzar
--oracle 里面 对触发器 也提供了特殊的对象 :NEW :OLD 来访问 更新前后的数据
dbms_output.put_line('更新后' || :NEW.sal);
dbms_output.put_line('更新前' || :OLD.sal);
fin;
crear tabla de información de usuario
(
número de ID de usuario (4) clave principal,
nombre de usuario varchar2(20)
)
crear información de complemento de tabla
(
número de addrid(4) clave primaria,
agregar nombre varchar2(20),
número de ID de usuario (4) hace referencia a información de usuario (ID de usuario)
)
insertar en valores de información de usuario (1,'李四')
insertar en valores addrinfo (1,'湖北武汉',1)
seleccione * de addrinfo
eliminar de la información de usuario donde ID de usuario = 1
--级联删除
crear o reemplazar el disparador tri_userinfo_delete
antes de eliminar
en información de usuario
para cada fila
comenzar
eliminar de addrinfo donde userid = :OLD.userid;
-- insertar en
fin;
crear tabla dept_bak como select * del departamento
crear o reemplazar vista myview
como
seleccione a.empno,a.ename,a.sal,b.dname
desde emp a departamento de unión interna b
en a.nºdept = b.nºdept
seleccione * desde mi vista
actualizar myview set sal = 1000,dname='aaaaa' donde empno = 7499
--替代触发器 用在视图上面 只能是行级的
--替代触发器 特点是 真正的操作已经 变成了一个动作而已 功能由触发器来完成
crear o reemplazar el disparador tri_myview
en lugar de actualizar
en mi vista
comenzar
dbms_output.put_line('删除操作执行了。。。');
actualizar emp set sal = :NEW.sal donde empno = :OLD.empno;
actualizar el conjunto del departamento nombred = :NEW.dname donde dname = :OLD.dname;
--eliminar de emp donde empno = :OLD.empno;
fin;
seleccione * de emp;
seleccione * del departamento;
actualizar emp_bak establecer ename ='aaaa',sal = 10000 donde empno en (7788)
--系统包
-- 产生随机数
**** **** **** ****
--dbms_random.value 0-1 之间的随机小数
--dbms_random.random
seleccione dbms_random.value de dual;
crear o reemplazar el procedimiento proc_cardno (mycardno out varchar2)
como
tarjeta temporal varchar2(50);
cardno varchar2(19);
comenzar
tarjeta temporal:= dbms_random.value;
número de tarjeta:=substr(tarjeta temporal,2,4)||' '||substr(tarjeta temporal,6,4)||' '||substr(tarjeta temporal,10,4)||' '||substr(tempcard,14,4);
minotarjeta:=notarjeta;
-- dbms_output.put_line(tarjeta temporal);
-- dbms_output.put_line(número de tarjeta);
fin;
--使用UTL_FILE包读写文件
crear el directorio MY_DIR como 'd:temp';
crear el directorio MY_DIR2 como 'd:temp2';
declarar
--定义文件对象
miarchivo utl_file.tipo_archivo;
--定义变量 用来存储每读出一行的数据
líneastr varchar2(200);
comenzar
--打开文件
miarchivo:= utl_file.fopen('MY_DIR','oracle.log','r');
--进行读取(循环)
bucle
utl_file.get_line(miarchivo,linestr);
dbms_output.put_line(linestr);
bucle final;
excepción
cuando otros entonces
utl_file.fclose(miarchivo);
dbms_output.put_line('读取完毕!');
fin;
declarar
--定义文件对象
miarchivo utl_file.tipo_archivo;
--定义变量 用来存储每读出一行的数据
líneastr varchar2(200);
comenzar
--打开文件
miarchivo:= utl_file.fopen('MY_DIR','oracle.log','a');
--追加数据
--utl_file.get_line(miarchivo,linestr);
utl_file.put_line(miarchivo,'你好,这是新的数据',true);
utl_file.fclose(miarchivo);
excepción
cuando otros entonces
utl_file.fclose(miarchivo);
dbms_output.put_line('读取完毕!');
fin;
--拷贝
declarar
--定义文件对象
archivo fuente utl_file.file_type;
archivo de destino utl_file.file_type;
--定义变量 用来存储每读出一行的数据
líneastr varchar2(200);
comenzar
--打开文件
archivo fuente:= utl_file.fopen('MY_DIR','oracle.log','r');
targetfile:= utl_file.fopen('MY_DIR2','copy.txt','a');
--进行读取(循环) 并且写入到新的文件里面
bucle
utl_file.get_line(archivo fuente,linestr);
utl_file.put_line(archivodestino,linestr,true);
-- dbms_output.put_line(linestr);
bucle final;
excepción
cuando otros entonces
utl_file.fclose(archivo fuente);
utl_file.fclose(archivo de destino);
dbms_output.put_line('拷贝完毕!');
fin;
本文来自CSDN博客,转载请标明出处: http://blog.csdn.net/hzz1988/archive/2009/12/30/5107869.aspx