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下面去了???数据库高手帮我解决下呀?????????

解决方案 »

  1.   

    对了,不要告诉我用NO_DATA_FOUND,要是那样的话达不到我要的效果!!谢谢了!!!!
      

  2.   

    QuerySql:='SELECT P.A FROM TB_A P WHERE P.B='''||A||''' AND  P.B='''||B||'''';
    你的查询sql文有问题吧!P.B='''||A||'''与P.B='''||B||''''怎能共存?那能查出数据吗?请确认!
      

  3.   

    那个A是传输的参数,我把传输参数改了下,编译时没报错,就是怎么执行都去了ELSE了,谢谢楼上的,写的没问题,我现在想问下,是不是SQL%FOUND不支持SELECT ??我用DELETE 和UPDATE都能行,哎!!!
      

  4.   

    动态SQL语句IMMEDIATE一般只用于更新或插入数据库的时候.
    当查询时好不好用,我不太确定.但如果是打开静态游标,读取数据的话,一定是好用的。