尝试在Oracle SQL Developer中生成随机数后出现错误ORA-00923

时间:2017-12-08 21:37:58

标签: oracle plsql

以下过程未完成,但我在尝试生成1和表大小之间的随机整数时遇到问题。任何想法?

create or replace PROCEDURE AssignPlayersTMs AS

TYPE usertype IS TABLE OF TEAM_MANAGERS.ACCT_USERNAME%TYPE;
UserNM usertype;
TYPE usertype2 IS TABLE OF ROSTERS.PLAYER_ID%TYPE;
Play usertype2;
Rn INT;

BEGIN
    SELECT ACCT_USERNAME BULK COLLECT INTO UserNM FROM TEAM_MANAGERS;
    SELECT PLAYER_ID BULK COLLECT INTO Play FROM PLAYERS;


    for i in 1..UserNM.count
    loop
        SELECT FLOOR(RAND()*(Play.count-1)+1) INTO Rn;


    end loop;
END;

编译器错误:

Error(17,9): PL/SQL: SQL Statement ignored
Error(17,54): PL/SQL: ORA-00923: FROM keyword not found where expected

1 个答案:

答案 0 :(得分:2)

SELECT在SQL中需要FROM子句 - 就像错误所说的那样。但是,您不需要SELECT为变量赋值。只需指定它:

此外,Oracle没有rand()功能。你必须使用dbms_random

create or replace PROCEDURE AssignPlayersTMs AS

  TYPE usertype IS TABLE OF TEAM_MANAGERS.ACCT_USERNAME%TYPE;
  UserNM usertype;
  TYPE usertype2 IS TABLE OF ROSTERS.PLAYER_ID%TYPE;
  Play usertype2;
  Rn INT;
BEGIN
    SELECT ACCT_USERNAME BULK COLLECT INTO UserNM FROM TEAM_MANAGERS;
    SELECT PLAYER_ID BULK COLLECT INTO Play FROM PLAYERS;

    for i in 1..UserNM.count
    loop
        rn := dbms.random.value(1, Play.count-1);
    end loop;
END;