段湘南.txt

来自「关于oracle和sql的书籍和ppt教程,非常好,本人珍藏品」· 文本 代码 · 共 56 行

TXT
56
字号
一:
1,从dept表打印出所有的部门名字
declare
   cursor name 
   is
   select dname from dept;
   v_name dept.dname%type;
begin
   open name;
   loop
   fetch name into v_name;
   dbms_output.put_line(v_name);
   exit when name%notfound;
   end loop;
   close name;
end;
2,定义一个返回类型的游标,该游标返回dept表所有的数据 (用两种方式)
declare
  type deptrecord is record(deptno dept.deptno%type,
                         dname dept.dname%type,
                         loc dept.loc%type,
                         deptname dept.deptname%type);
  v_dept deptrecord;
  --v_dept dept%rowtype;
  cursor dept1
  is
  select * from dept;  
begin
  open dept1;
  loop
     fetch dept1 into v_dept;
     dbms_output.put_line(v_dept.deptno||' '||v_dept.dname||' '||v_dept.loc||' '||v_dept.deptname);
     exit when dept1%notfound;
  end loop;
  close dept1;
end;
二,建一个触发器,完成一个约束:emp表的薪水sal 不能大于20000
create or replace trigger sal_set
before 
update or insert
on emp
for each row
begin
    if(:new.sal >= 20000) then
    raise_application_error(-20001,'薪水不能超过2万元');
   end if;
end;
三,以上午写的student,teacher 表为例子,写一个触发器,当删除teacher表的一行数据库时,在student表删除相应的数据(即:删除老师所教的学生)
create or replace trigger del_teacher
after
delete
on teacher
for each row
begin
   delete from teacher where tid = :new.tid;
   delete from student where lid = :old.tid;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?