当前位置: 代码迷 >> Oracle开发 >> Oracle开发心得一
  详细解决方案

Oracle开发心得一

热度:101   发布时间:2016-04-24 07:23:30.0
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); -- 要返回的信息Idbegin    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_IDminvalue 1maxvalue 9999999999999999start with 74increment by 1cache 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

?

?

  相关解决方案