`
weigang.gao
  • 浏览: 491195 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

存储过程优化后 验证 优化后的存储过程是否正确

 
阅读更多

由于proc_policyDetail执行效率偏低,所以可能对proc_policyDetail进行优化。但是编写好新的procedure怎么来确定它是正确的呢?

我们可以改写proc_policyDetail,将其执行的结果保存到一张临时表中temp_policy_one。将proc_policyDetail_n执行的结果存储到temp_policy_two中。

--在保单号相同的情况下,分别使用新旧procedure进行数据采集  
procedure main  as
   begin
    for cur_policy in (
       select POLICY_NO from vw_ods_policy where rownum < 11 --取10个保单号进行测试
      )loop
      proc_policyDetail(cur_policy.POLICY_NO);--优化之前的procedure,将前10个保单号执行的结果保存到temp_policy_one
      proc_policyDetail_n(cur_policy.POLICY_NO); --优化之后的proedure,将前10个保单号执行的结果保存到temp_policy_two
      end loop;

  end main;

 由于proc_policyDetail已经在生产上使用了很长的事件,确认没问题的,所以说proc_policyDetail_n中采集的数据要与proc_policyDetail采集的数据一致,则说明proc_policyDetail_n是正确的。

 

采集完后,需要比较2张表中的数据是否一致,我们可以采用如下办法:将所有字段拼接到一起进行比较

select * from temp_policy_one a,temp_policy_two b
where a.policy_no = b.policy_no
and 
(
 nvl(to_char(a.policy_no),'')
||nvl(to_char(a.POLICY_STATUS),'')
||nvl(to_char(a.STATUS_DATE),'')
||nvl(to_char(a.CVRG_NAME),'')
||nvl(to_char(a.EFFECT_DATE),'')
||nvl(to_char(a.AREA),'')
||nvl(to_char(a.CHANNEL),'')
||nvl(to_char(a.ISSUE_DATE),'')
||nvl(to_char(a.RCPT_ACK_DATE),'')
||nvl(to_char(a.PREM),'')

||nvl(to_char(a.LOAN),'')
||nvl(to_char(a.BLLINGFREQ),'')

||nvl(to_char(a.PAYTODAY),'')
||nvl(to_char(a.NFO_DEFAULT_TYPE),'')
||nvl(to_char(a.BLLNG_ACCT_NMBR),'')
||nvl(to_char(a.SUSPEND_EVENT),'')
||nvl(to_char(a.SUSPEND_REASON),'')
||nvl(to_char(a.PAYMENTMETHOD_NEXT),'')
||nvl(to_char(a.PAYMENT_ADDRESS),'')

||nvl(to_char(a.PREM_M),'')
||nvl(to_char(a.PREM_S),'')
||nvl(to_char(a.PREM_H),'')
||nvl(to_char(a.PREM_Y),'')
||nvl(to_char(a.PREM_N),'')

||nvl(to_char(a.VIP),'')
||nvl(to_char(a.BLLNG_BANK_NAME),'')
||nvl(to_char(a.AUTOPAYMENTDATE_LAST),'')
)
<>
(
nvl(to_char(b.policy_no),'')
||nvl(to_char(b.POLICY_STATUS),'')
||nvl(to_char(b.STATUS_DATE),'')
||nvl(to_char(b.CVRG_NAME),'')
||nvl(to_char(b.EFFECT_DATE),'')
||nvl(to_char(b.AREA),'')
||nvl(to_char(b.CHANNEL),'')
||nvl(to_char(b.ISSUE_DATE),'')
||nvl(to_char(b.RCPT_ACK_DATE),'')
||nvl(to_char(b.PREM),'')

||nvl(to_char(b.LOAN),'')
||nvl(to_char(b.BLLINGFREQ),'')

||nvl(to_char(b.PAYTODAY),'')
||nvl(to_char(b.NFO_DEFAULT_TYPE),'')
||nvl(to_char(b.BLLNG_ACCT_NMBR),'')
||nvl(to_char(b.SUSPEND_EVENT),'')
||nvl(to_char(b.SUSPEND_REASON),'')
||nvl(to_char(b.PAYMENTMETHOD_NEXT),'')
||nvl(to_char(b.PAYMENT_ADDRESS),'')

||nvl(to_char(b.PREM_M),'')
||nvl(to_char(b.PREM_S),'')
||nvl(to_char(b.PREM_H),'')
||nvl(to_char(b.PREM_Y),'')
||nvl(to_char(b.PREM_N),'')

||nvl(to_char(b.VIP),'')
||nvl(to_char(b.BLLNG_BANK_NAME),'')
||nvl(to_char(b.AUTOPAYMENTDATE_LAST),'')
);

 

 

 

分享到:
评论

相关推荐

    SAP HANA 中调试存储过程

    其中,对于存储过程的调试是开发者日常开发工作中的一个重要环节,SAP HANA为存储过程提供了内置的调试功能,这使得开发者能够方便地验证逻辑的正确性,追踪代码执行流程,检查变量值变化,从而对程序中的错误进行...

    SQL Server中存储过程比直接运行SQL语句慢的原因

    优化存储过程的方法包括: 1. **避免参数嗅探**:可以通过重写存储过程,使用动态SQL或者选项`OPTION(RECOMPILE)`来规避参数嗅探带来的问题。 2. **使用适当的索引**:确保涉及的表有适当的索引,以加速查询和JOIN...

    帆软报表Oracle存储过程解决storeParameter1参数试用插件

    4. 验证效果:再次打开设计器,尝试调用无参数的Oracle存储过程,应不再出现"storeParameter1"参数的错误提示。 需要注意的是,使用此插件可能需要一定的技术背景,例如对帆软报表系统架构的理解、XML配置文件的...

    利用JS文件来优化网站表单验证和提交代码

    优化后的表单验证和提交代码可以提高网络传输的效率,减少无效的服务器请求,提升用户体验。 综上所述,通过JavaScript文件来优化网站表单验证和提交代码是一种有效的方法,能够显著提高网站开发的效率和质量,同时...

    银行转帐存储过程

    在数据库管理中,存储过程是一种预编译的SQL语句集合,它封装了特定的数据库...在实际的银行系统开发中,这样的存储过程会被优化并与其他系统组件(如前端应用程序、后台服务等)结合,以提供安全、高效的金融服务。

    身份证检验SQL存储过程

    `IDCheck.js`可能是一个JavaScript实现的身份证验证函数,通常用于前端表单验证,它可以在用户输入身份证号后立即进行简单的有效性检查,提供即时反馈,但最终的验证仍需依赖后端的SQL存储过程。 6. **数据库操作**...

    Oracle存储过程开发的要点

    3. 使用SQL*Plus工具运行存储过程,以便测试和验证其功能。 4. 对存储过程进行修改,以适应需求的变化或修复错误。 5. 通过编译错误进行调试,确保代码的正确性。 6. 当不再需要时,可以使用`DROP PROCEDURE`语句...

    自动生成存储过程的工具

    - 测试和调试:提供测试环境,便于验证存储过程的正确性和性能。 3. **使用自动生成存储过程的工具的注意事项** - 虽然工具可以提高效率,但可能无法完全替代人工审查和调整,以确保符合业务逻辑和安全规范。 - ...

    过滤器存储过程用例

    在实践中,我们会创建一个或多个测试数据集,编写对应的存储过程,然后运行测试用例来验证其正确性和性能。 总的来说,过滤器存储过程是数据库开发中的一个重要工具,它帮助我们更有效地处理和过滤大量数据,提高...

    DELPHI存储过程调用

    总结,通过Delphi调用SQL Server的存储过程进行用户登录验证,既提高了代码复用性,也优化了性能。正确配置ADO组件,编写和调用存储过程,结合适当的前端设计,可以实现功能完善的用户登录系统。

    通过Schema验证XML格式是否正确

    9. **调试与测试**:验证XML文件是否正确时,通常需要编写测试用例,包括合法的XML文档和预期会失败的非法XML,以确保验证逻辑的准确性。 综上所述,"通过Schema验证XML文件格式是否正确"这个主题涵盖的内容广泛,...

    oracle 存储过程

    - 事务处理:在多表操作和数据一致性验证时,存储过程能够有效地利用事务管理,确保数据的一致性和完整性。 - 可维护性:将业务逻辑封装在存储过程中,使代码更易于管理和更新。 - 分离设计和编码:开发人员只需...

    DB2存储过程语法大全

    为了验证SQL存储过程的环境是否配置正确,可以通过一系列命令进行测试,包括设置编译路径、重启DB2实例、连接到数据库、创建并删除一个简单的存储过程。如果所有步骤均成功完成,说明SQLProcedure环境已正确配置。 ...

    SQL存储过程,触发器讲解及过程中要注意的内容

    1. **性能优化**:虽然存储过程和触发器可以提高性能,但过度使用可能导致数据库复杂性和维护成本增加。合理设计和优化是必要的。 2. **权限管理**:存储过程和触发器都可能涉及敏感数据操作,因此需要控制好执行...

    ASP.NET学生网上选课系统数据库及存储过程

    例如,`AddSelection`存储过程可以接收学号和课程号,检查是否满足选课条件,若无误则插入选课记录。 3. 数据统计:通过存储过程,可以快速获取各种统计数据,如每门课程的选课人数、各班级的平均学分等。 4. 安全性...

    通用存储过程+增删改查

    2. **Insert操作**:在数据库中插入新记录是常见的任务,通过存储过程实现,可以验证输入数据的合法性,确保插入的数据符合业务规则。例如,可以检查字段是否为空,数据格式是否正确等,然后执行插入语句。 3. **...

    存储过程基本语法world文档

    创建和删除简单存储过程以验证环境配置是否正确。 **SQL Procedure基础原理** - **基本结构**:存储过程由复合语句组成,可以包含变量声明、流程控制语句等。 - **Procedure Schema**:创建在当前连接的模式或指定...

    存储过程测试心得总结

    1. **单元测试**:针对每个独立的存储过程进行测试,验证其功能是否符合预期,输入和输出是否正确。 2. **边界条件测试**:考虑输入值的最小值、最大值、空值以及非法值等情况,确保存储过程在各种边界条件下都能...

Global site tag (gtag.js) - Google Analytics