Oracle tablespace user table sequence procedure trigger function cursor

---------------create tablespace----------------------
create tablespace TEST datafile 'C:\oracle\product\10.2.0\oradata\orcl\test01.dbf' size 2000M;
---------------create user -----------------------
create user study identified by study default tablespace TEST;

grant dba to study;
grant connect, resource to study;

--grant create session to study;
--grant create table to study;
--grant unlimited tablespace to study;

select * from user_sys_privs where privilege like '%TABLESPACE%'

select * from user_tab_privs_made

----------create table----------------------------------
-- Create table
create table STUDENT
(
ID NUMBER not null,
NAME VARCHAR2(50),
AGE NUMBER
)
tablespace TEST
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);

-----------create sequence------------------
-- Create sequence
create sequence STUDENT_SEQ
minvalue 1
maxvalue 1000
start with 11
increment by 1
cache 10
cycle
order;

----------create procedure------------------
create or replace procedure insertStudent(id in number, name in varchar2, age in number) is
begin
insert into student values(id, name, age);
end;

---------execute procedure---------------

CALL insertStudent (2, 'Tony', 20);

begin insertStudent (5, 'Mily', 30); end;


在PL/SQL Developer中从左侧Objects中 选中procedure,右键Test,在下面的窗口中填入值,可以调试,可以运行。

----------create trigger-------------------------------------------------

create or replace trigger biufer_student_id
before insert or update of id on student
referencing old as old_value
new as new_value
for each row
when (new_value.id <20)
begin
:new_value.age:=100;
end;
/

insert into student(id, name) values(2, 'test');

create or replace trigger bifer_student_id
before insert on student
for each row
begin
select student_seq.nextval into :new.id from dual;
end;
/

insert into student(name) values ('haha');

------------function-----------------------------
create table etl_date(date_char varchar2(8), date_date date);

declare
v_date date;
begin
execute immediate 'truncate table etl_date';
for v_date in 20111001..20111021 loop
insert into etl_date(date_char, date_date)
select v_date, to_date(v_date, 'yyyy-mm-dd') from dual;
end loop;
commit;
end;

select * from etl_date;

---------------cursor-------------------------------

reference: http://blog.sina.com.cn/s/blog_5f92e8c50100o4ez.html

--------------------------------------

extend link:

http://www.stuhack.com/sjk/oracle/2010/1016/5944.html

http://hi.baidu.com/%CE%D2%B0%AE%D5%C5%D3%B1/blog/item/43df79fbe5166d6e024f56b2.html

猜你喜欢

转载自freesky-zh.iteye.com/blog/1401395