oracle 10g中我需要获取一个随机数,在用下面语句  
select abs(mod(dbms_random.random,100)) from dual;
测试的时候提示ORA-00904:   无效字符 
但改用SYS AS DBA登入执行同一语句能够得到一随机数。
请问下有没有朋友知道如何解决。

解决方案 »

  1.   

    你用的用户不能调用dbms_random包
    识别不了
      

  2.   

    create user w2 identified by 1;
    grant connect to w2;
    select abs(mod(dbms_random.random,100)) from dual;ABS(MOD(DBMS_RANDOM.RANDOM,100
    61 其实我很纳闷,你是不是包名函数名写错了?
    dbms_random这是sys包,每个用户都能访问才对
    你看我随便建个用户,只赋给connect权限都能调用成功
      

  3.   

    不能啊,SYS执行的完全是同一条语句
      

  4.   

    你再执行一次确认一下
    还不行的话看看不能调用random的用户的权限
    调用别的系统函数试试
    比如 一些数学函数

    dbms_output.put_line()
      

  5.   

    建同义词试试
    先用sys/ as sysdba来授权
    GRANT EXECUTE ON SYS.dbms_random TO [你的用户名]再用自己的用户登陆
    CREATE SYNONYM dbms_random FOR sys.dbms_random
      

  6.   

    set serveroutput on
       declare
       i1 integer;
       begin
       select abs(mod(dbms_random.random,100)) into i1 from dual; 
       dbms_output.put_line('生成随机H1=' || i1 || ';'); 
       end;
      

  7.   

    采用如下方法:
    先用sys/ as sysdba来授权
    GRANT EXECUTE ON SYS.dbms_random TO [你的用户名]再用自己的用户登陆
    CREATE SYNONYM dbms_random FOR sys.dbms_random
    OK 了,
     非常感谢!!!!