日期:2014-05-17  浏览次数:20757 次

Oracle开发经验一

对于oracle的操作;

1。有时,我们为了实现某种功能,在oracle中,写一些函数,然后在业务操作中,拼接sql语句中,调用该函数;

但是如果直接在oracle中写函数,反而有点不容易,我们可以使用pl/sql中,继承的对函数操作的界面工具;

=>找到functions文件夹,然后新建一个,然后使用text进行测试方可;

如下函数,是为了实现将一个序列实现的自增长的数据,组合成7为数字; 如果不足7位,则补零;0000003 ;

create or replace function fn_get_Personid -- 个人信息采集:获取7位的id值
(
id in varchar2 -- 无用
) 
return  varchar2 is
 t_id varchar2(10); -- 要返回的信息Id
begin
    
select SEQ_HR_PERSON_ID.Nextval 
into t_id
 from dual; -- 查询序列
 
 if length(t_id)=6 then
 t_id:='0'||t_id;
 elsif length(t_id)=5 then
 t_id:='00'||t_id;
 elsif length(t_id)=4 then
 t_id:='000'||t_id;
 elsif length(t_id)=3 then
 t_id:='0000'||t_id;
 elsif length(t_id)=2 then
 t_id:='00000'||t_id;
 elsif length(t_id)=1 then
 t_id:='000000'||t_id;
 end if;
 
  return(t_id); -- 返回处理后的数据
end fn_get_Personid;

?

?2.?在oracle中,不存在关键字identity实现自增长,我们可以为每个表单独创建一个序列; 实现自增长;当然,我们仍然不必手写代码,pl/sql已经集成该功能; 找到sequences 文件夹,然后右键新建方可;

-- Create sequence 
create sequence SEQ_HR_PERSON_ID
minvalue 1
maxvalue 9999999999999999
start with 74
increment by 1
cache 20;

?

3.当然,对于触发器、存储过程、游标,我们也可以借助pl/sql进行操作,比手写方便的多;

4.对于在oracle中,我们顶多创建主键、默认; 我们不特意的指定外键 ;? 在我们创建表时,为每个表都添加一个特殊的列,用于对该列的注释;

5.我们使用了pl/sql,我们不用去修改代码,直接就是用select * from one for update ,进行信息的修改方可;

6.对于一个有数据的列,我们可以添加一列可为空的列且有默认值的列!? -》验证是否可以添加可为空的列!

7.如果我们使用pl/sql连接局域网内的oracle,则我们需在oracle的安装文件进行配置:

E:\oracle\ora92\network\admin\tnsnames.ora 中添加:

?

?

zch1 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.5.101)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = zch)
    )
  )

?

?

这样,我们再pl/sql中,方可找到指定的数据库,然后根据指定的用户名,进行登录控制!

?8. oracle中的sql代码,将一个数字,转义为汉字的方法 ;

Decode(B.D401_STATU,'0','未采集','1','采集',B.D401_STATU)

如果B.D401_STATU == '0' ,则返回'未采集' ;

如果B.D401_STATU == '1 ,则返回'采集' ;

否则返回B.D401_STATU

?

?