FUNCTION YHC (nrownum in number) return varchar2
is
  state_ VARCHAR2(30);
BEGIN
     state_ := NULL;
     select DUMMY into state_ from dual; WHERE ROWNUM =nrownum ;
     IF(state_ is NULL)THEN
               return 'Null';
     ELSIF(state_='')THEN
         return '空字符串';
     ELSE
         return '未知的值'|| state_;
     END IF;
END YHC;select PACKAGE_Name.yhc(0) as 结果是多少 from dual;

解决方案 »

  1.   

    select DUMMY into state_ from dual; WHERE ROWNUM =nrownum ;当查询不到结果时state_是多少,此函数yhc(0)返回结果不知道?
      

  2.   

    大家可以测试一下,按道理上说应该是null,其实则不是
      

  3.   

    如过此问题如此简单,我也不会发布上来.搞了半天我总算知道原因了.
    IF(state_ is NULL)THEN
      return 'Null';
    ELSIF(state_='')THEN
      return '空字符串';
    ELSE
      return '未知的值'|| state_;
    END IF;
    到底返回的是什么呢.还是留给大家想想吧.第个答对的分数就归谁.
      

  4.   

    未知的值.
    dual表好象有一行的,值为'X'
      

  5.   

    正确答案是发生了异常:SQL> CREATE OR REPLACE FUNCTION YHC (nrownum in number) return varchar2
      2  is
      3    state_ VARCHAR2(30);
      4  BEGIN
      5       state_ := NULL;
      6       select DUMMY into state_ from dual WHERE ROWNUM =nrownum ;
      7       IF(state_ is NULL)THEN
      8                 return 'Null';
      9       ELSIF(state_='')THEN
     10           return '空字符串';
     11       ELSE
     12           return '未知的值'|| state_;
     13       END IF;
     14  
     15        EXCEPTION
     16      WHEN OTHERS THEN
     17        return '异常:' || SQLCODE || SQLERRM;
     18  END YHC;
     19  /Function createdSQL> select yhc(0) as 结果是多少 from dual;结果是多少
    --------------------------------------------------------------------------------
    异常:100ORA-01403: 未找到数据
      

  6.   

    有过这方面经验的都会知道 select .. into 时,没有返回记录会报异常的