表与表的关系把RD搞乱了,记一个Procedure中的bug

就是6张表的关联查询,写了一个存储过程,使用4层for来处理

bug:
最后一个for中,两张表的关联条件少了一个,结果数据多查了。

排查办法:
使用dbms_output.printline('');
每一个for中加一个

dbms_output.put_line('-3、'||x.name);//把与下层for关联的关键信息打印出来
dbms_output.put_line('-2、'||x.name);//把与下层for关联的关键信息打印出来
dbms_output.put_line('-1、'||x.name);//把与下层for关联的关键信息打印出来
dbms_output.put_line('0、'||x.name);//把与下层for关联的关键信息打印出来
然后,就顺藤摸瓜了。

然后在Commnad Window中调用这个存储过程,拿到打印信息

SQL> set serveroutput on
SQL> exec sum_num(3,1256);

 

总结:
功能一直要仔细验证,不同角度可以发现问题

 

要用dbms_output.put_line来输出语句,遇到以下错误:

begin user_priv (username => 'hr'); end; 
  
ORA-20000: ORU-10027: buffer overflow, limit of 2000 bytes 
ORA-06512: at "SYS.DBMS_OUTPUT", line 32 
ORA-06512: at "SYS.DBMS_OUTPUT", line 97 
ORA-06512: at "SYS.DBMS_OUTPUT", line 112 
ORA-06512: at "HR.USER_PRIV", line 20 
ORA-06512: at line 2

很显然当我们在输出时,控制输出结果的缓冲大小由DBMS_OUTPUT.ENABLE控制,buffer size默认为20000,每行最大的限制是32k,后面的一个例子是用来说明存储过程是在缓存了所有数据后才将结果返回。所以当我们使用游标进行输出时,如果结果很多,将会超过这个值报ORA-20000, ORU-10027: Buffer overflow, limit of <buf_limit> bytes这个错误 
解决方法: 
在存储过程begin后面加 :  DBMS_OUTPUT.ENABLE (buffer_size=>null)     表示没有限制.

存储过程user_priv 请参考文档:http://www.cnblogs.com/AlbertCQY/archive/2013/03/31/2992471.html

http://blog.csdn.net/u010033674/article/details/8744588

时间: 2024-08-02 05:32:42

表与表的关系把RD搞乱了,记一个Procedure中的bug的相关文章

如何理清ERP的表之间的复杂关系?

问题描述 请教大牛,有没有好的办法理清ERP的表之间的复杂关系?小弟总是觉得表比较复杂,记不住.请给点指导,感激不尽! 解决方案 解决方案二:看文档,做笔记解决方案三:把业务流程图画出来:根据业务流程图把表关联起来:这样就把抽象的表变成了可视化的流程.用业务流程把表穿起来就很容易理解了.剩下的开发用表,例如字典表,编号表之类的,可以另记:剩下的就没多少了.解决方案四:关键是理解业务,业务理解了,表什么的,那就是自然反应解决方案五:先画出流程图,把握业务的整体运行架构,然后流程的每个模块画出相应的

Hibernate中表与表之间的级联关系

问题描述 Hibernate中表与表之间的级联关系 2C 投票系统1. # 需求: 用户可以创建投票也可以_参与投票2.数据库结构如下 1.感觉VOTER表应该是 多对多 的中间表2.VOTE表与USERS表之间存在明显的多对一关系但是结合 VOTE与VOTER和USERS三者来看 又好像 VOTE表与USERS表之间存在明显的多对多关系 此时的表间关系 VOTE表与USERS表之间 好像是存在 多对一 又存在 多对多 这样合理吗? 解决方案 1:多对1的关系?????? 例如部门Departm

mybatis-请问一下,我的表和表设置的外键对吗,还有他们的关系

问题描述 请问一下,我的表和表设置的外键对吗,还有他们的关系 mybatis的查询语句怎么写,还有 这两个表的id应该写一样吗,求告解 解决方案 http://www.educity.cn/wenda/424714.html 解决方案二: Oracle数据库中,知道一张表,查询与其有主外键关系的表两个不同用户数据库中的表是否可以建立外键关系 oracle关于数据库主从表.主键.外键的关系----------------------

select-两表有外键关系,但没有外键约束,根据A 表ID 查找B 表

问题描述 两表有外键关系,但没有外键约束,根据A 表ID 查找B 表 Select s.ID as SID,s.NAME as SNAME,d.ID as DID,d.NAME as DNAME,d.SEQ as DSEQ,d.SYSDATE as DSYSDATE,d.ISACTIVES as DISACTIVES From TSPC as s,TSPCDETAIL as d where s.ID=d.SPECID and SID=#{SID},根据id 查找 TSPCDETAIL 可以这样写

sql-关于SQL的。。。已建好表怎么查看数据库关系图??

问题描述 关于SQL的...已建好表怎么查看数据库关系图?? 关于SQL2008的 已建好表怎么查看数据库关系图??有哪位大神说说嘛??能给个流程吗?? 解决方案 用management studio看 解决方案二: 另外你专门问弱智的问题,又从不采纳.下次再这样,姐姐就不和你玩啦.

写一个存储过程,更新5张表,表之间没有关系,表中的字段也不相同,要用传参数的形式

问题描述 写一个存储过程,更新5张表,表之间没有关系,表中的字段也不相同,要用传参数的形式 求助,写一个存储过程,更新5张表,表之间没有关系,表中的字段也不相同,要用传参数的形式.是否可以写在一个存储过程中.谢谢大家啦.遇到难题啦. update语句已经写好了,就是不知道如何整合成存储过程. 解决方案 可以的,一个存储过程可以执行多个update语句

MySQL---数据库从入门走向大神系列(四)-子查询、表与表之间的关系

本篇博客讲解(子查询)非相关子查询/相关子查询,一对一,一对多,多对一,多对的的关系! 准备: 首先我们创建一列sex.再为部分行设置好值0(女)或者1(男): delete from stud where age=26; 删除年龄为26的行. update stud set sex='1' where saddress like '湖南%'; 将地址中湖南开头的人的的sex修改为1. update stud set sex='0' where age>=30 and sex is null;

SAP库存表之间的逻辑关系

SAP库存表之间的逻辑关系 转载于SAP学习门户网,原文链接: http://www.sap6.com/learn/mm/073504302015/3370.html   当前库存:   一般保存在 MARD 表 LABST 字段中, 为Valuated Unrestricted-Use Stock           INSME: Stock in Quality Inspection           SPEME: Blocked Stock           当然, 也可这样:    

通过shell分析表依赖的层级关系

在平时的工作环境中,总会有一些表会存在依赖关系,比如我们有三张表customer,用户表subscriber,账户表account 其中客户可以有多个用户或者账户,subscriber表和account表中就存在外键customer_id指向了customer表. 这种情况下表的依赖关系就如下所示: customer             subscriber             account 如果表中的层级关系更为复杂,如果能够得到一个很清晰的依赖关系表.在做一些重要的操作时就能运筹帷