ITPub博客

首页 > Linux操作系统 > Linux操作系统 > tom 学习笔记

tom 学习笔记

原创 Linux操作系统 作者:wisdomone1 时间:2008-05-14 11:20:54 0 删除 编辑
variable x refcursor   ---special cursor ---显式cursor
begin
open :x for select username from dba_users;
end;
/
print x;


variable scn number
exec :scn:=dbms_flashback.get_system_change_number
print scn

delete from bigtable;


flashback table bigtable to scn :scn; 注意要alter table bigtable enable row movement
select *
from (select count(*) from bigtable),(select count(*) from bigtable as of scn :scn)



begin
for x in(select username from dba_users)
loop
  insert into t values(x.username);
  commit;
end loop;
end;


create sequence t_seq;

create table t(pk number primary key);

create  or replace trigger t_trigger  ---利用trigger and sequence 确保 record pk
before insert on t
for each row
begin
select t_seq.nextval into :new.pk from dual;
end;
/

构建 pk and fk
create table emp(empno number,name varchar2(3),deptno number);
/
create table dept(deptno number,name varchar2(3));
/
alter table emp add constraint emp_pk primary key(empno);
/
alter table dept add constraint dept_pk primary key(deptno);
/
alter table emp add constraint emp_fk_dept foreign key(deptno) references dept;
/


create or replace trigger tr_insert
after insert on dept
for each row
begin
insert into emp values(1,'zxy',:new.deptno);
end;
/


记录删除的数据
create table del_dept as select * from dept where 1=0;
create or replace trigger tr_record
before delete on dept
for each row
begin
insert into del_dept values(ld.deptno,ld.name);
end;
/


---级联删除(要除父,子也要除掉)
create or replace  trigger tr_del_dept_emp
before delete on dept
for each row
begin
delete from emp where deptno=ld.deptno;
dbms_output.put_line('相关的子表记录也删除了,放心吧!!!');
end;
/


alter trigger tr_insert disable;

/

--plsql
create table t(x int);
/
create or replace procedure proc1
as
begin
for i in 1..10000 loop
execute immediate 'insert into t values(:x)' using i;
commit;
end loop;
end;
/

exec proc1;

---让用户只开一个会话
create profile one_session limit sessions_per_user=1;
alter user scott profile one_session;
alter system set resource_limit=true;


---轻松找到trace文件
alter  session set tracefile_identifier='my trace file';
alter session set sql_trace=true;



oerr ora 12933 ---查询oracle err



/


declare
type vc is table of t.x%type;
l_vc vc;
cursor c is select x from t;
begin
open c;
loop
fetch c bulk collect into l_vc limit 100;
forall i in 1..l_vc.count
update t set;
commit;
exit when c%notfound;
end loop;
close c;
end;
/

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9240380/viewspace-350561/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
提供针对oracle初学者及进阶的数据库培训,欢迎大家咨询: 微信: wisdomone 微信公众号: lovedb 工作经历: 中国普天 北京科蓝 北京云和恩墨 北京神州新桥

注册时间:2008-04-04

  • 博文量
    2189
  • 访问量
    12689906