当前位置: 代码迷 >> Oracle开发 >> ORACLE中的WHILE话语的判断条件处报错
  详细解决方案

ORACLE中的WHILE话语的判断条件处报错

热度:1016   发布时间:2016-04-24 08:04:47.0
ORACLE中的WHILE语句的判断条件处报错
我要实现的是WHILE 表不为空 LOOP,环境是PL/SQL中的一个存储过程

这里我写的是while (select count(*) from nodecal)>0 loop

但是PL/SQL总是报错,PLS-00103: 出现符号“SELECT”在需要下列之一时。。。

不知道是否我的语法有问题,那么想实现这样的功能该怎么写呢?谢谢了。

------解决方案--------------------
代码迷推荐解决方案:oracle存储过程,http://www.daimami.com/search?q=177537
------解决方案--------------------
SQL code
create or replace p_testn number;beginselect count(*) into n from nodecal;while n>0 loop...............end loop;
------解决方案--------------------
楼主以前应该是用SQL SERVER的,SQL SERVER可以这样写的,可以将SQL语句放入IF 判定或者WHILE循环条件的判定中,ORACLE对于这种是不允许的。

你可能每次循环的时候都要去获取一次COUNT觉得很烦,但是这个ORACLE的规矩,其实只是写法上不一样,你那种写法即使成立也是每次需要去提取一次,所以在ORACLE里面一般来说你如果直接使用WHILE循环就需要在循环外面写一次COUNT,循环里面还要写错一次COUNT,估计你的count应该是在不断变化中的(注意程序不要走入死循环了,这个根据实际情况去判定)

方法1:在循环外面获取一次COUNT,循环里面结束后还要获取一次,以得到最新的COUNT用以下一次WHILE判定。
SQL code
declare  n number;loopBEGIN  select count(*) into n from nodecal;  while n>0 loop    ...............执行代码片段    select count(*) into n from nodecal;  end loop;END;
  相关解决方案