return varchar2 is
  THE_C1     INTEGER;
  THE_RESULT INTEGER;  vExecute := ' SELECT * from 。;    THE_C1   := DBMS_SQL.OPEN_CURSOR;
  DBMS_SQL.PARSE(THE_C1, vExecute, DBMS_SQL.V7);
  DBMS_SQL.DEFINE_COLUMN(THE_C1, 1, vCnt);
  THE_RESULT := DBMS_SQL.EXECUTE(THE_C1);我想知道vExecute执行后是否有返回值
但是为什么THE_RESULT 返回值一直是0呢我怎样能知道是否有返回查询结果

解决方案 »

  1.   

    对于非查询的语句,execute将执行该语句并返回处理了的行的个数。 
    对于查询语句,execute将确定活动集,返回0
      

  2.   


        THE_C1   := DBMS_SQL.OPEN_CURSOR;
        DBMS_SQL.PARSE(THE_C1, vExecute, DBMS_SQL.native);
        THE_RESULT := DBMS_SQL.EXECUTE(THE_C1);
    --这里我用retch_rows来判断是否有返回值,<=0有,>0没有
        IF DBMS_SQL.FETCH_ROWS(THE_C1) > 0 THEN 
          THE_VALUE := 0;
        else
          THE_VALUE := 1;但是现在有的sql语句会在DBMS_SQL.PARSE除抛出异常,不知道为什么
      

  3.   

    没有异常信息,我有一个exception,它直接调到exception,原因找到了,sql有点问题,我改了现在问题是我的这种判断select是否返回结果的逻辑好像有点问题,不知道能不能用这种逻辑