2012-04-26 69 views
2

我嘗試過這樣從Oracle DB中刪除用戶。Oracle存儲過程刪除用戶

create or replace procedure skeleton1(inUser varchar) IS 
begin 
    set @str = concat('drop user ', "'",inUser,"'@","'localhost'"); 
    prepare stmt from @str; 
    -- select @str; 
    execute IMMEDIATE stmt; 
    deallocate prepare stmt; 
end// 
delimiter ; 

但我面臨着多個編譯錯誤。

somone請幫忙嗎?

回答

4

你所擁有的只是有效的Oracle語法。我建議你在嘗試做任何可能具有破壞性的事情之前,先閱讀PL/SQL文檔。也許開始here,看看它需要你。

我稍微不願意給出直接的答案,但你會從某個地方得到它;所以你可以這樣做:

create or replace procedure skeleton1(inUser varchar) IS 
begin 
    execute IMMEDIATE 'drop user ' || inUser); 
end; 
/

但是你要淨化你的投入,真正確保它不能被濫用,你真的需要了解你在做什麼,什麼樣的影響它可能有。舉一個例子,如果用戶擁有任何對象,這將失敗。

+0

+1「*開始閱讀PL/SQL文檔*」 – 2012-04-26 09:49:38

+0

謝謝,您的回覆非常有幫助。 – 2012-04-26 10:01:12