2016-03-22 5 views
0

私はoracleを初めて使用しています。プロシージャを介してユーザーにロールを付与しようとしています。私は次のエラーを受け取ります。誰かがこれで私を助けてくれますか?エラー・レポート - ORA-00900:無効なSQL文

declare stmnt2 varchar(10000); 
p_user_name varchar2(20); 
v_role_name varchar2(20); 
begin 
v_role_name := 'ROLE'; 
p_user_name := 'TOM'; 
stmnt2 := 'grant '||v_role_name||' to ' 
          ||v_user_name||'; ' 
          ||' grant connect to ' 
          ||v_user_name ; 
execute immediate stmnt2; 
end; 
/

Error report - 
ORA-00900: invalid SQL statement 
ORA-06512: at line 10 
00900. 00000 - "invalid SQL statement" 

Thank you 

答えて

1

あなたは声明の中で、スペースを持っていない:

stmnt2 := 'grant '||v_role_name||' to '||p_user_name; 

これは良い仕事しなければなりません。

+0

ありがとうございました!それは働いたが、今私は以下の文で問題がある:stmnt2:= 'grant' || v_role_name || ' ' || v_user_name ||'; ' ||'グラントは ' に接続します|| v_user_name; – Guest

+0

これを1つずつ実行し、execute immediateが動作しないためセミコロン(;)を削除します。 – massie