下面的二段语句作用相同,只是长度不同,有一个报错另一个没有错误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的区别就是长度不同,请问有人碰到类似的问题吗
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的区别就是长度不同,请问有人碰到类似的问题吗
解决方案 »
- 请教日期处理问题,在线等
- DB2 SQLSTATE 57055: 带有足够页大小的临时表空间不可用。
- 那位兄弟推荐几本oracle的书,比较深入的,一方面是开发的,一方面是数据库管理的
- execute immediate ERROR
- oracle 新手提高,高手指点一下! 关于通过ODBC导入数据!
- sql 数据库里把字符窜里的换行去掉 或者改成空 也可以 帮我问问怎么写sql
- oracle密码问题
- 基础问题,大虾帮忙!
- 初学Oracle,安装的是8i,那有以下的图书的电子版下载?好学习学习。开发人员....
- 急!请各位高手帮忙优化一下这个存储过程!-新手勿进
- 为什么一台机器上面的PL/SQL、c#、oracle客户端工具 数据不同步
- 数据同步问题
delphi啊,不懂,学习下啊!