我创建了一个创建Oracle用户并授予他们角色的脚本。我无法找到忽略“用户存在”错误的方法:
ORA-01920:用户名''与其他用户或角色名称冲突。
据我所知,当脚本运行时,用户可能已经存在,但我想忽略任何返回的错误。这可能吗?
我的Oracle代码:
CREATE USER "John" PROFILE "DEFAULT" IDENTIFIED BY "temppassword" ACCOUNT UNLOCK;
修改 如果用户不存在,这个问题不是询问如何创建用户。这个问题是询问如何忽略“用户存在”错误。根据之前提出的问题,最佳答案说明了
通常,Oracle脚本只执行CREATE语句,如果 对象已经存在,你会得到一个错误,表明,哪个 你可以忽略。这是所有标准Oracle部署的最新情况 脚本。
答案 0 :(得分:1)
为什么你不能找到用户是否先存在?
SELECT COUNT(*)
INTO V_count
from ALL_USERS
where username = 'YourUserName'
IF v_count = 0 THEN
--create the user
--execute the grants
ELSE
---log that the user already exists
END IF;
答案 1 :(得分:1)
componentWillReceiveProps: (newProps) ->
console.log "newProps", newProps.account.subbableProperties
console.log "newProps", newProps.account.subbableProperties.length
console.log "props", @props.account.subbableProperties
console.log "props", @props.account.subbableProperties.length
if !(_.isEqual(newProps.account.subbableProperties, @props.account.subbableProperties))
alert("it happens in willReceiveProps!")
答案 2 :(得分:1)
您不清楚自己如何运行脚本,但假设通过SQL * Plus,您可以在the whenever sqlerror
command遇到错误时修改行为。
如果您的脚本目前设置为exit
,或者您从启动脚本(login.sql
,glogin.sql
)中选择了该脚本,则可以将其更改回来,或暂时修改它:
...
-- do not stop on error
WHENEVER SQLERROR CONTINUE;
CREATE USER "John" PROFILE "DEFAULT" IDENTIFIED BY "temppassword" ACCOUNT UNLOCK;
-- to stop when later errors are encountered
WHENEVER SQLERROR EXIT FAILURE;
ALTER USER ...
您仍然会在输出中看到ORA-01920,但它会继续执行下一个语句。在尝试创建模式对象之前,此模式对于保护性删除模式对象也很有用。