Oracle存储过程中EXECUTE IMMEDIATE 执行结果是空时怎么继续执行?

kiss阳光 2019-07-10 03:54:42
Oracle存储过程中EXECUTE IMMEDIATE 执行结果是空时怎么继续执行?
EXECUTE IMMEDIATE P_SQL_QUERY INTO P_NUM;
P_SQL_QUERY里边是select count(1) from t
p_num 定义的是number类型,现在存储过程执行报错,因为P_SQL_QUERY执行的结果是null,现在不知道怎么处理了,其实我只想要P_SQL_QUERY的结果不是空的那些,但是由于有空的,导致报错不能继续执行,请大神指点!!!
...全文
1116 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
AHUA1001 2019-08-20
  • 打赏
  • 举报
回复
2个方案: 1、用NVL,将NULL,处理成您需要的值。 2、增加异常处理,保证那段代码即使出了问题,也可以继续执行下去,不要让它断掉。
minsic78 2019-07-15
  • 打赏
  • 举报
回复
动态SQL既然无论如何不能为空,那么代码多一步判断,如果为空,将P_SQL_QUERY赋值为一个无意义的可执行SQL,后续针对这种情况下的p_num也多个判断即可。
kiss阳光 2019-07-15
  • 打赏
  • 举报
回复
有知道怎么处理的吗
kiss阳光 2019-07-11
  • 打赏
  • 举报
回复
引用 2 楼 Mricoo_周 的回复:
P_SQL_QUERY里面有group by吗,如果有的话且字段有空值的话会是null。建议先在where后面先把null过滤掉

没有group不用,只有一个count(1)查询数据库里每个表是否有数据
kiss阳光 2019-07-11
  • 打赏
  • 举报
回复
引用 1 楼 ZJHZ_叶 的回复:
count没有数据也是0,你后面有having吧

没有having,就是判断表里有没有数据,然后放入变量,进行后续的操作,现在是如果表里没有数据到这里就报错EXECUTE IMMEDIATE P_SQL_QUERY INTO P_NUM;
Mricoo_周 2019-07-10
  • 打赏
  • 举报
回复
P_SQL_QUERY里面有group by吗,如果有的话且字段有空值的话会是null。建议先在where后面先把null过滤掉
ZJHZ_叶 2019-07-10
  • 打赏
  • 举报
回复
count没有数据也是0,你后面有having吧

3,498

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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