2

我尝试了类似的方法从 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 ;

但我面临多个编译错误。

有人可以帮忙吗?

4

1 回答 1

4

您所拥有的很少是有效的 Oracle 语法。我建议你在尝试做任何可能具有破坏性的事情之前开始阅读 PL/SQL 文档。也许从这里开始,看看它会把你带到哪里。

我有点不愿意直接回答,但你会从某个地方得到它;所以你可以做类似的事情:

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

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

于 2012-04-26T09:04:05.723 回答