2017-12-08 15 views
0

次の手順は完了しませんが、1と表のサイズの間のランダムな整数を生成しようとしています。何か案は?ORA-00923:Oracle SQL Developerで乱数を生成した後

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 

答えて

2

AはSELECT SQLでFROM句を必要とします - ちょうどエラーのように述べています。しかし、変数に値を代入するのに、SELECTは必要ありません。

また、Oracleにはrand()機能がありません。 「:宣言されなければならない識別子 『RAND』 PLS-00201」をあなたはより多くの意味が、私はまだ言ってエラーを取得しますその

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; 
+0

ためdbms_randomを使用する必要がありますか? – CalcGuy

+0

@CalcGuy:私の編集を参照 –

+0

構文エラーはありません!助けてくれてありがとう!コードにはアンダースコアbtwがありません。うまくいけば、残りのコードを完成させたらうまくいきます! – CalcGuy

関連する問題