Oracle存储过程删除用户

时间:2012-04-26 08:47:01

标签: oracle

我试过这样的东西从Oracle DB中删除用户。

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 ;

但我面临多次编译错误。

请大家帮忙吗?

1 个答案:

答案 0 :(得分:4)

您拥有的有效Oracle语法很少。我建议你在尝试做任何像这样破坏性的事情之前先阅读PL / SQL文档。也许从here开始,看看它在哪里。

我有点不愿直接回答,但你会从某个地方得到它;所以你可以这样做:

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

但是你需要消毒你的输入以确保它不会被滥用,你真的需要了解你在做什么以及它可能产生的影响。就像一个例子,如果用户拥有任何对象,这将失败。