1、用随机函数
select mobile into v_mobile from 
    (
       select mobile,rownum as rid from t_user
    )
where rid =trunc(dbms_random.value(1,v_count)) ;返回的结果 有时候出现空行 有时返回符合要求的一行 有时候返回多行2、采用sample
select  mobile into v_mobile from (
       select mobile,rownum as rid from t_user  sample(10)
    )
where rownum <2;检索的结果 正常问:为什么第一种方式不对?

解决方案 »

  1.   

    你执行一下:select mobile ,id , trunc(dbms_random.value(1,v_count))  from
    (
    select mobile,rownum as rid from t_user
    )
    你肯定就非常明白了。
      

  2.   

    写成这个就能用了:SELECT mobile, rid
      FROM (SELECT mobile, ROWNUM AS rid
              FROM mobile ) ttt
     WHERE rid = (SELECT TRUNC (DBMS_RANDOM.VALUE (1, 100))
                        FROM DUAL);