2012-04-26 15 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

"* PL/SQLドキュメントの読込みを開始しています*" –

+0

ありがとうございました。本当にありがとうございました。 –