志在指尖
用双手敲打未来

oracle存储过程(实例详解)

oracle存储过程

一个带参数的存储过程
SQL>CREATEORREPLACEPROCEDUREHelloWorld1(
2p_user_nameVARCHAR2
3)AS
4BEGIN
5dbms_output.put_line(‘Hello’||p_user_name||’!’);
6ENDHelloWorld1;
7/
Procedurecreated.
SQL>CREATEORREPLACEPROCEDURECallHelloWorld1(
2p_userVARCHAR2
3)AS
4BEGIN
5–调用存储过程的存储过程
6HelloWorld1(p_user);
7ENDCallHelloWorld1;
8/
Procedurecreated.
执行
SQL>setserveroutputon
SQL>execCallHelloWorld1(‘Tom’);
HelloTom!
PL/SQLproceduresuccessfullycompleted.oracle

oracle存储过程实例详解

1,需求
登录App的账号是从两个不同的体系过来,一个是zy,一个是mh。
2,完结机制
开始选用的是全量同步,行将本体系的信息一条条的与其他体系对比,没有就新增剩余就删去。这样全量同步导致的结果是进程时刻履行太久,需求30分钟左右。
然后考虑用增量同步,即其他体系送操作标识过来,每张表都新增一个op_flag,A代表新增,D代表删去,M代表修正,根据这些标识进行更新。这样修正后大大提高了同步效率,只需5分钟即可完结,但呈现另一个问题,维护本钱太大。因为增量同步只触及到本次的数据,上次犯错的数据是不会处理的。刚上线时,肯定大大小小会存在问题,所以每次修正问题后还要对历史数据进行处理,工作量巨大,而且后续假如有新增的岗位信息,这也是个问题。
最后选用的是差集比较,全量同步和增量同步交融方法,关于具有有意义的仅有标识的表,如人员表,可将staff_id进行差集比较。关于联系表,如人员与小区的联系表,进行全量对比(staff_id有必要加索引)。于非要害信息,进行增量同步,如人员的地址和名字(只处理M)。这样处理后,履行效率高,只需5分钟左右;维护本钱低,无需修正历史数据;定位问题快,可直接定位到详细的记录。
3,详细
1)有必要树立回退和备份机制
回退:当突然呈现大批量账号问题导致无法登录App时,首先将所有触及的表回退,使之能正常登录,然后才是剖析和查找问题。
备份:账号信息同步犯错时,有必要剖析是自己同步进程有误还是账号从其他体系过来便是错的,所以有必要树立备份机制才能剖析到底是哪一方的问题。
2)有必要树立同步日志和监控机制
日志:新建一张日志表,字段至少要有时刻,详细的进程名,报错或更新的信息,便于快速定位问题。
监控:将报错的详细信息刺进短信表,有个短信进程每隔半个小时会扫描,将短信发给负责人,负责人能实时监控同步进程的异常信息。
3)新建一个Package包,将所有进程放到包里,便于管理
4)新建一个进程用于job履行
该进程可操控不同进程的履行顺序,假如新增或删去,就不需求修正job,直接修正该进程即可收效。
5)问题的仅有标识
进入到每个游标里时,将仅有标识记录下来,犯错时把仅有标识写到表里,这样抛错的时候,不用一行行的去调试,直接定位问题所在,大大提高查找问题的效率
6)Insert句子
选用insertintotable(字段)values(值)方式,不要用insertintotablevalues()方法。因为table是链路过来的表的话,假如新增字段,没有处理的话,则会报错,选用第一种方式的话,就不会报错。
7)Update、delete句子
不要写没有where条件的update或delete句子
4,其他
触及到公司秘要,详细代码就不上传了。

未经允许不得转载:IT技术网站 » oracle存储过程(实例详解)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载