PL/SQL2009.4.24

//author 满晨晨
//time 2009 4 24上午


clob初始化为empty-clob()
blob初始化为empty-clob()


ed a
@ a

sequence序列
序列号 每次读取它会自动增加 一般用在需要序列号排序的地方

create sequence 序列名称
increment by 增量
start with 起始数字
nomaxvalue/maxvalue 数字
nocycle/cycle
cache 数字;


nomaxvaue  只能搭配nocycle 用

maxvaue  cycle 或者nocycle搭配用
 
序列命名规则
seq_数据库名称
create sequence seq_db
start with
increment by 1
maxvalue 10
nocycle
cache 2;


dual是经常用来系统测试的表


序列名字.currval  nextval

 


create sequence seq_1
start with 1
increment by 1
maxvalue 100
cycle/nocycle
cache 2;
创建序列  1到100 然后再回到1到100
declare
sname number(3):=1;
begin
    loop
insert into emp(empno,ename,hiredate,deptno)values(seq_1.nextval,'aa'||sname,sysdate,30);
sname:=sname+1;
exit when sname>1000;


 end loop;


end;

 

无法例程化石因为到了最大值了 改改序列的循环maxvalue

同一个语句多此调用nextvalue是同样的数值

代理主键 统一为ID
没有实际含义 只起到唯一标志一条记录的作用

主键因为一般不能更改 起到唯一标志的作用 可是有些主键可以被更改
如学号等等作主键  代理主键就来作为唯一标志 一定要选没有实际含义
id  varchar2(32) 一般用户 max地址 系统时间来定义


存储过程
把begin
end之间的业务逻辑存下来 好直接被引用

procedure

 

 
create  or replace procedure 名称

para1 in/out datetype,    in传入的参数 (insert时候)在过程中不能被修改 out 返回值 在过程中可以被修改 
para1 in/out datetype

 


as /is
begin

do

end 过程名称;

 


exec 存储过程的名字     :调用存储过程

 


存储过程不能用declare声明变量

要想用声明变量
()如上面的

 

 

create or  replace procedure  p_b
(

v_id in varchar2,
v_name in varchar2,
v_psw in varchar2,
v_address in varchar

 

)


as

 

 

begin

insert into t_user(id,name,psw,address)values
(v_id,v_name,v_psw,v_address);


end;

插入数据 对内的  所以用in

如果对外输出的话变量用out
exec p_b(354,546,'456sd','srf5');

 

procedure变量中不能声明变量类型的大小

create or  replace procedure  p_c
(v_id in number(12))错误的 这是自动扩展的 12不能用定义大小 也不能给它赋值 in是给它赋值的 出来的时候exec的时候给它赋值的

 

create or  replace procedure  p_c
(

v_id in number:=1,
v_name in number:=1,
v_psw in number:=1,
v_address in number:=1

 

)


as

 

 

begin
loop
insert into t_user(id,name,psw,address)values
('id'||v_id,'name'||v_name,'psw'||v_psw,'address'||v_address);
v_id:=v_id+1;
v_name:=v_name+1;
v_psw:=v_psw+1;
v_address:=v_address+1;


exit when v_id>200,v_name>200,v_psw>200,v_address>200;

 

 

end loop
end;

删除存储过程
drop procedure 过程名(); 
select table_name from user_table

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值