首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如果Oracle用户还不存在,则创建它

如果Oracle用户还不存在,则创建它
EN

Stack Overflow用户
提问于 2015-06-08 05:53:08
回答 4查看 31.8K关注 0票数 12

我正在尝试创建一个脚本,如果用户还不存在,他们就会创建

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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错误: ORA-00922:缺失或无效选项

我能够在Server 2008中使用以下方法完成此操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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中是否有类似的方法来检查用户是否已经存在?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-06-08 06:19:51

Server中可用的IF NOT EXISTS语法在Oracle中不可用。

通常,Oracle只需执行CREATE语句,如果对象已经存在,您将得到一个指示该语句的错误,您可以忽略该错误。这是所有标准Oracle部署脚本所做的工作。

但是,如果确实希望检查是否存在,并且只在对象不存在的情况下执行,从而避免了错误,则可以编写PL/SQL块。编写一个检查用户是否存在的SQL,如果它不存在,使用EXECUTE IMMEDIATEPL/SQL块执行CREATE USER

这样一个PL/SQL块的例子可能是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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;
/
票数 21
EN

Stack Overflow用户

发布于 2015-06-08 06:10:57

您需要编写pl/sql块。参见这里示例

可以使用一些pl/sql代码检查用户是否存在于all_users表中,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT count(*) INTO v_count_user
FROM all_users
WHERE username = 'Kyle'

然后在IF条件下使用v_count_user有条件地执行create语句。

票数 5
EN

Stack Overflow用户

发布于 2016-11-25 01:47:28

从前面的答案可以清楚地看出,if not exists在Oracle中是不受支持的。为了澄清Oracle在试图创建一个已经存在的用户时抛出的错误(另外,当尝试删除一个非现有用户时,作为一种奖励):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
drop user foo;
ORA-01918: user 'foo' does not exist

create user existing_user IDENTIFIED BY existing_user;
ORA-01920: user name 'existing_user' conflicts with another user or role name

上述语句是在Oracle数据库11g企业版11.2.0.1.0 -64位产品上执行的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30710990

复制
相关文章
axios的响应处理
在使用Axios发送请求后,可以通过.then()方法来处理成功的响应,并获取返回的数据。以下是一个示例:
堕落飞鸟
2023/05/19
1.4K0
vue for循环中按顺序axios请求拿到每条数据对应的状态
在循环数组的时候基于每个对象中的某个参数来进行数据请求,获取当前对象对应的数据状态 实现方法基于最新的es6中的async await 来实现 首先要把对应的Promise方法进行一个封装
李维亮
2021/07/08
1.9K0
for循环的执行顺序
第二步,判别表达式2是否满足给定条件,若其值为真,满足循环条件,则执行循环体内语句,然后执行表达式3,然后进入第二次循环。若判断表达式2的值为假,就终止for循环,执行循环体外语句。
全栈程序员站长
2022/07/15
1.8K0
顺序循环队列
1 //循环队列的顺序存储表示与实现 2 3 #include <stdio.h> 4 #include <stdlib.h> 5 6 /****************************************************************************** 7 /* 数据类型和常量定义 8 /*****************************************************************************
猿人谷
2018/01/17
8120
顺序循环队列
for循环中执行顺序_顺序结构选择结构循环结构
今天刷题碰到的一个坑,就是没有注意到for循环的每次判断条件导致的**,也就是for循环的第二句**,每次循环都会执行该判断条件。
全栈程序员站长
2022/11/17
8210
java继承的调用顺序
加入了子类以后,执行顺序有了新的变化,我们可以总结一下。首先第一部分执行的是父类的静态代码块—子类的静态代码块—主程序。这一部分都是执行一次,与建立多少对象没有关系。第二部分new了一个父类对象,并调用了方法。执行了它的非静态代码块—构造函数—一般方法。第三部分new了一个子类的对象,并调用了方法。执行顺序为父类的非静态代码块—父类的无参构造函数,然后是子类的非静态代码块—子类构造函数—子类的方法。
用户7043603
2022/02/27
8070
vue-axios调用接口
引入axios 和qs; axios的浏览器兼容器.png getMsg() { axios ( { method: "post", url: " 接口地址", responseType:
用户4344670
2019/08/28
7960
vue-axios调用接口
Axios调用后台接口
axios.post('http:phpapi.com', { key: key, type: 'getdata', data: { id: 1 } }) .then(function (res) { // 成功的回调 console.log(res) }) .catch(function (error) { // 失败的回调 console.log(error); });
明知山
2020/09/03
1.5K0
axios django CSRF 403错误
使用axios直接post django的接口的时候会提示CSRF 403错误 可以在post的data中转入csrftoken 也可以给单个方法关闭 from django.views.decorators.csrf import csrf_exempt,csrf_protect @csrf_exempt def test(request): pass
小贝壳
2020/03/05
1.4K0
循环数组
array ( 'product_id' => array ( 0 => '1', 1 => '16', ), 'product_price_id' => array ( 0 => '2', 1 => '', ), 'qty' => array ( 0 => '1', 1 => '1', ), )
botkenni
2022/01/10
1.3K0
axios拦截所有请求和响应
chao超的搬运文章
2023/10/15
2380
axios封装错误请求函数
在使用axios作为请求工具时我们通常不在catch中对错误操作进行处理,我们可以将请求错误的操作放在响应拦截器中进行,日常开发只需要在then做业务即可。
用户6256742
2022/07/06
1.2K0
多线程循环顺序处理的方式
核心点: 1.锁共同资源lock 2.通过while循环判断每次被唤醒是否要再次阻塞
名字是乱打的
2021/12/24
5840
循环队列的顺序存储结构Java
在上次,我们讲到的是,队列的顺序存储结构也是由ArrayList实现的,从此就可以看出,在入队时候的时间复杂度为O(1),但是在出队时候的时间复杂度为O(n),这是因为,每次在出队后要将数组后面的有效元素前移一位。 所以,这里就会用到循环队列,显然,这种队列也是顺序存储结构,在这个循环队列中也会去实现接口Queue。 首先,我们要想到的是如何将一般的队列改变为循环队列。
全栈程序员站长
2022/08/29
7730
循环队列的顺序存储结构Java
一比一还原axios源码(五)—— 拦截器
  上一篇,我们扩展了Axios,构建了一个Axios类,然后通过这个Axios工厂类,创建真正的axios实例。那么今天,我们来实现下Axios的拦截器也就是interceptors。我们来简单看下Axios的interceptors的API:
zaking
2022/05/10
7860
一比一还原axios源码(五)—— 拦截器
刚出锅的 Axios 网络请求源码阅读笔记
Axios是一款基于 Promise 并可用于浏览器和 Node.js 的网络请求库。
小东同学
2022/07/29
1.5K0
刚出锅的 Axios 网络请求源码阅读笔记
[PHP] php中的索引数组和数组顺序问题
先上结论 , php的索引数组不是传统的从0开始的整数索引数组 , 而是一个关联数组 , 是一个有序的键值对 ,这个序就是定义时候的顺序
唯一Chat
2021/04/25
9.3K0
【前端探索】告别烂代码!用责任链模式封装网络请求
用vue开发web页面的时候,axios几乎是必选的网络框架,我们有时候需要在请求发出前和收到响应后,对数据做一些处理,这时候就会用到axios的拦截器,如果拦截器中我们需要处理的逻辑太过复杂,有什么方案可以优化么?
luciozhang
2023/04/22
5640
【前端探索】告别烂代码!用责任链模式封装网络请求
数组常用循环
对于JS我们常见的循环有下面这些: for 循环 for in 循环 for of 循环 forEach() map() filter() some() every() 下面要循环的数组 var arr = ['a', 'b', 'c']; 1、for 循环 for (var i = 0; i < arr.length; i++) { console.log(arr[i]) } 2、for in 循环 for (var i in arr) { cons
用户6973020
2020/02/24
1.4K0
数组循环左移
/* 功能:数组循环左移 日期:2013-05-20 */ #include <stdio.h> #include <stdlib.h> #include <math.h> #define LEN 6
WindCoder
2018/09/19
1.6K0

相似问题

用redux响应本机axios api调用

21

Axios调用中的Joi验证没有给出正确的响应

111

用Axios返回具有多个响应的数组

13

用Axios和承诺循环API调用

24

如何使Axios用Rails调用json响应?

31
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文