BEGIN
QuerySql:='SELECT P.A FROM TB_A P WHERE P.B='''||A||''' AND  P.B='''||B||'''';
EXECUTE IMMEDIATE QuerySql;
IF SQL%FOUND THEN
DBMS_OUTPUT.put_line('DDDDDDD');
RAISE EXIST_EXCEPTION;
RETURN;
ELSE
DBMS_OUTPUT.put_line('CCC');
END IF;
END;我在表中能查到上面过程中的SELECT数据,可是怎么执行到ELSE下面去了???数据库高手帮我解决下呀?不是说用NO_DATA_FOUND那样的话就达不到我要的效果了,谢谢了!!!

解决方案 »

  1.   

    QuerySql:='SELECT P.A FROM TB_A P WHERE P.B='''||A||''' AND  P.B='''||B||'''';换成QuerySql:='SELECT P.A FROM TB_A P WHERE P.B=''||A||'' AND  P.B=''||B||''';试试看~~
      

  2.   

    据我所只select 语句用SQL%FOUND 是不能判断出检索出多少条结果的
    它能知道insert或者update了多少条记录,或者select into
    如果你想要知道检索出多少条记录有2个办法,
    一个是count(*)
    一个就是
    用游标打开这个语句,然后
    open cursexx
    loop 
        fetch cursexx into curseryy
          exit when cursexx %notfound;RAISE EXIST_EXCEPTION;
    RETURN;
    end loop;