gpt4 book ai didi

oracle - 如果 Oracle 用户尚不存在,则创建该用户

转载 作者:行者123 更新时间:2023-12-04 01:36:21 24 4
gpt4 key购买 nike

我正在尝试创建一个脚本来创建用户 如果它们不存在 .

CREATE USER "Kyle" PROFILE "DEFAULT" IDENTIFIED BY "password" ACCOUNT UNLOCK
WHERE NOT IN //Also tried 'WHERE NOT EXISTS'
(
SELECT username FROM all_users WHERE username = 'Kyle'
)

给出以下错误:

SQL Error: ORA-00922: missing or invalid option



我能够通过使用以下方法在 SQL Server 2008 中做到这一点:
IF NOT EXISTS
(SELECT name FROM master.sys.server_principals
WHERE name = 'Kyle')
BEGIN
CREATE LOGIN Kyle WITH PASSWORD = 'temppassword' MUST_CHANGE, CHECK_EXPIRATION=ON, CHECK_POLICY=ON
END

在尝试创建新用户之前,Oracle 中是否有类似的方法来检查用户是否已存在?

最佳答案

IF NOT EXISTS SQL Server 中可用的语法,在 Oracle 中不可用。
通常,Oracle 脚本只是执行 CREATE语句,如果该对象已经存在,您将收到一个错误指示,您可以忽略该错误。这是所有标准 Oracle 部署脚本所做的。
但是,如果您真的想要检查是否存在,并且只在对象不存在时才执行,从而避免错误,您可以编写一个PL/SQL块。写个 SQL检查用户是否存在,如果不存在,使用 EXECUTE IMMEDIATE要做CREATE USER来自 PL/SQL块。
此类 PL/SQL 块的示例可能是:

declare
userexist integer;
begin
select count(*) into userexist from dba_users where username='SMITH';
if (userexist = 0) then
execute immediate 'create user smith identified by smith';
end if;
end;
/

关于oracle - 如果 Oracle 用户尚不存在,则创建该用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30710990/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com