--创建触发器(行级触发器)
создать или заменить триггер tri_update_emp_bak
после обновления
на emp_bak
для каждой строки --每更新一行 就触发一次
начинать
--oracle 里面 对触发器 也提供了特殊的对象 :НОВЫЙ :СТАРЫЙ 来访问 更新前后的数据
dbms_output.put_line('更新后' || :NEW.sal);
dbms_output.put_line('更新前' || :OLD.sal);
если обновлять то
конец, если;
если вставить
конец;
--创建触发器(行级触发器)(前置)
создать или заменить триггер tri3_update_emp_bak
перед обновлением
на emp_bak
для каждой строки --每更新一行 就触发一次
начинать
--oracle 里面 对触发器 也提供了特殊的对象 :НОВЫЙ :СТАРЫЙ 来访问 更新前后的数据
dbms_output.put_line('更新后' || :NEW.sal);
dbms_output.put_line('更新前' || :OLD.sal);
конец;
выберите * из emp_bak
обновить emp_bak, установить sal = 1000, где empno в (7788)
--创建触发器(表级触发器)
--//表级别触发器里面 不允许使用 :НОВЫЙ :СТАРЫЙ 变量
создать или заменить триггер tri2_update_emp_bak
после обновления
на emp_bak
начинать
-- dbms_output.put_line('更新后' || :NEW.sal);
--dbms_output.put_line('更新前' || :OLD.sal);
конец;
--创建触发器(行级触发器)
создать или заменить триггер tri4_update_emp_bak
после обновления Сала
на emp_bak
для каждой строки --每更新一行 就触发一次
начинать
--oracle 里面 对触发器 也提供了特殊的对象 :НОВЫЙ :СТАРЫЙ 来访问 更新前后的数据
dbms_output.put_line('更新后' || :NEW.sal);
dbms_output.put_line('更新前' || :OLD.sal);
конец;
создать таблицу с информацией о пользователе
(
первичный ключ идентификатора пользователя (4),
имя пользователя varchar2(20)
)
создать таблицу addrinfo
(
первичный ключ addrid Number(4),
добавить имя varchar2(20),
номер идентификатора пользователя (4) ссылается на информацию о пользователе (идентификатор пользователя)
)
вставить в значения информации пользователя (1,'李四')
вставить в значения addrinfo (1,'湖北武汉',1)
выберите * из адреса
удалить из информации о пользователе, где идентификатор пользователя = 1
--级联删除
создать или заменить триггер tri_userinfo_delete
перед удалением
в информации о пользователе
для каждой строки
начинать
удалить из addrinfo, где userid = :OLD.userid;
-- вставить в
конец;
создать таблицу dept_bak как select * from dept
создать или заменить представление myview
как
выберите a.empno,a.ename,a.sal,b.dname
из emp a внутренний отдел соединения b
на а.дептно = б.дептно
выберите * из моего просмотра
обновить myview set 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;
--удалить из emp, где empno = :OLD.empno;
конец;
выберите * из 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);
начинать
tempcard:= dbms_random.value;
cardno:=substr(tempcard,2,4)||' '||substr(tempcard,6,4)||' '||substr(tempcard,10,4)||' '||substr(tempcard,14,4);
mycardno:=cardno;
-- dbms_output.put_line(tempcard);
-- dbms_output.put_line(cardno);
конец;
--使用UTL_FILE — доступный файл
создайте каталог MY_DIR как 'd:temp';
создайте каталог MY_DIR2 как 'd:temp2';
объявить
--定义文件对象
мой файл utl_file.file_type;
--定义变量 用来存储每读出一行的数据
строка varchar2 (200);
начинать
--打开文件
myfile:= utl_file.fopen('MY_DIR','oracle.log','r');
--进行读取(循环)
петля
utl_file.get_line(мойфайл,linestr);
dbms_output.put_line(linestr);
конечная петля;
исключение
когда другие тогда
utl_file.fclose(мой файл);
dbms_output.put_line('读取完毕!');
конец;
объявить
--定义文件对象
мой файл utl_file.file_type;
--定义变量 用来存储每读出一行的数据
строка varchar2 (200);
начинать
--打开文件
myfile:= utl_file.fopen('MY_DIR','oracle.log','a');
--追加数据
--utl_file.get_line(мойфайл,linestr);
utl_file.put_line(myfile,'你好,这是新的数据',true);
utl_file.fclose(мой файл);
исключение
когда другие тогда
utl_file.fclose(мой файл);
dbms_output.put_line('读取完毕!');
конец;
--拷贝
объявить
--定义文件对象
исходный файл utl_file.file_type;
целевой файл utl_file.file_type;
--定义变量 用来存储每读出一行的数据
строка varchar2 (200);
начинать
--打开文件
исходный файл:= utl_file.fopen('MY_DIR','oracle.log','r');
целевой файл: = utl_file.fopen('MY_DIR2','copy.txt','a');
--进行读取(循环) 并且写入到新的文件里面
петля
utl_file.get_line(исходный файл,linestr);
utl_file.put_line(targetfile,linestr,true);
-- dbms_output.put_line(linestr);
конечная петля;
исключение
когда другие тогда
utl_file.fclose(исходный файл);
utl_file.fclose(целевой файл);
dbms_output.put_line('拷贝完毕!');
конец;
Файл CSDN-файла, файл CSDN-файла: http://blog.csdn.net/hzz1988/archive/2009/12/30/5107869.aspx