请问在sql语句中有对having的长度限定吗

chentony 2009-01-05 02:57:09
下面的二段语句作用相同,只是长度不同,有一个报错另一个没有错误

if :query_find.back_status is not null then
v_add_having := 'having ((''已到款'' = ''已到款'' and ((NVL(cip.amount_present_documents,0) - nvl(sum(oms_ra_pkg.get_invl_apply_amount(cil.ci_line_id,
trunc(sysdate))),0)) <= 0) and (nvl(sum(oms_ra_pkg.get_invl_apply_amount(cil.ci_line_id,
trunc(sysdate))),0) <> 0))

OR (''未到款'' = ''未到款'' and ((NVL(cip.amount_present_documents,0) - nvl(sum(oms_ra_pkg.get_invl_apply_amount(cil.ci_line_id,
trunc(sysdate))),0)) <= 0) and (nvl(sum(oms_ra_pkg.get_invl_apply_amount(cil.ci_line_id,
trunc(sysdate))),0) = 0))
) ';

else
v_add_having := null;
end if;


if :query_find.back_status is not null then
v_add_having := 'having (('''||:query_find.back_status||''' = ''已到款'' and ((NVL(cip.amount_present_documents,0) - nvl(sum(oms_ra_pkg.get_invl_apply_amount(cil.ci_line_id,
trunc(sysdate))),0)) <= 0) and (nvl(sum(oms_ra_pkg.get_invl_apply_amount(cil.ci_line_id,
trunc(sysdate))),0) <> 0))

OR ('''||:query_find.back_status||''' = ''未到款'' and ((NVL(cip.amount_present_documents,0) - nvl(sum(oms_ra_pkg.get_invl_apply_amount(cil.ci_line_id,
trunc(sysdate))),0)) <= 0) and (nvl(sum(oms_ra_pkg.get_invl_apply_amount(cil.ci_line_id,
trunc(sysdate))),0) = 0))
OR ('''||:query_find.back_status||''' = ''未到款'' and ((NVL(cip.amount_present_documents,0) - nvl(sum(oms_ra_pkg.get_invl_apply_amount(cil.ci_line_id,
trunc(sysdate))),0)) <= 0) and (nvl(sum(oms_ra_pkg.get_invl_apply_amount(cil.ci_line_id,
trunc(sysdate))),0) = 0))
) ';

else
v_add_having := null;
end if;

第一就没有问题,而第二个就会提示 ora-01403错误

对于二个sql的区别就是长度不同,请问有人碰到类似的问题吗
...全文
104 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
oraclelogan 2009-01-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 chentony 的帖子:]
下面的二段语句作用相同,只是长度不同,有一个报错另一个没有错误

Delphi(Pascal) code
if :query_find.back_status is not null then
v_add_having := 'having ((''已到款'' = ''已到款'' and ((NVL(cip.amount_present_documents,0) - nvl(sum(oms_ra_pkg.get_invl_apply_amount(cil.ci_line_id,
trunc(sysdate))),0)) <= 0) a…
[/Quote]

delphi啊,不懂,学习下啊!
chentony 2009-01-06
  • 打赏
  • 举报
回复
有可能如三楼说的,在 having中出现了多条符合条件的数据。
xiaoxiao1984 2009-01-05
  • 打赏
  • 举报
回复
ora-01403: no data found

应该是你改写之后的SQL没有查询到任何结果,导致类似select ... into xxx where ... 的时候出错了,因为查询返回记录数为0
binsweet 2009-01-05
  • 打赏
  • 举报
回复
没有限制,只不过太多会影响效率而已。报错肯定是你的语法有问题
mantisXF 2009-01-05
  • 打赏
  • 举报
回复
请贴出最后生成的SQL语句.[Quote=引用楼主 chentony 的帖子:]
下面的二段语句作用相同,只是长度不同,有一个报错另一个没有错误

Delphi(Pascal) code
if :query_find.back_status is not null then
v_add_having := 'having ((''已到款'' = ''已到款'' and ((NVL(cip.amount_present_documents,0) - nvl(sum(oms_ra_pkg.get_invl_apply_amount(cil.ci_line_id,
trunc(sysdate))),0)) <= 0) a…
[/Quote]

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧