我试过这样的东西从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 ;
但我面临多次编译错误。
请大家帮忙吗?
答案 0 :(得分:4)
您拥有的有效Oracle语法很少。我建议你在尝试做任何像这样破坏性的事情之前先阅读PL / SQL文档。也许从here开始,看看它在哪里。
我有点不愿直接回答,但你会从某个地方得到它;所以你可以这样做:
create or replace procedure skeleton1(inUser varchar) IS
begin
execute IMMEDIATE 'drop user ' || inUser);
end;
/
但是你需要消毒你的输入以确保它不会被滥用,你真的需要了解你在做什么以及它可能产生的影响。就像一个例子,如果用户拥有任何对象,这将失败。