当前位置: 首页 > 知识库问答 >
问题:

如何使用executeimmediate在Oracle中创建create用户?

司空坚
2023-03-14

我的数据库是XE18。我的用户有create user,我可以使用以下命令在SQL Plus中创建用户:

ALTER SESSION SET "_ORACLE_SCRIPT" = true;
CREATE USER auxiliar IDENTIFIED BY auxiliar2020 ;

然后,我创建了一个包,其中包含一个函数,该函数应该是动态创建用户,下面几行是:

EXECUTE IMMEDIATE 'alter session set "_ORACLE_SCRIPT"=true';
vSql := 'CREATE USER :1 IDENTIFIED BY ":2" ' ;
EXECUTE IMMEDIATE vSql USING vNome_Usuario,vSenha_Usuario;

我得到这个错误:

关系到错误-
ORA-65096: nome de atconição ou de usuário comum inválido
ORA-06512: em"TOKEN.PRC_CRIA_USUARIO",第3行
ORA-06512: em第3行
65096. 00000-"无效的普通用户或角色名"
*原因:试图创建名称对普通用户或角色无效的普通用户或角色。除了用户名和角色名的通常规则之外,公共用户名和角色名必须仅由ASCII字符组成,并且必须包含common_user_prefix参数中指定的前缀。

共有1个答案

江敏学
2023-03-14

在这种情况下不能使用bind变量

你能试试吗,

DECLARE
  in_user     VARCHAR2(30) := 'some_user';
  in_password VARCHAR2(9)  := 'changeMe';
BEGIN
  EXECUTE IMMEDIATE 'CREATE USER '||in_user||' IDENTIFIED BY '||in_password;
  EXECUTE IMMEDIATE 'GRANT CREATE SESSION TO '||in_user;
END;
/
 类似资料:
  • 我试图创建一个简单的表,但它给了我一个错误: 剧本: 我想不出这个问题,有人能帮忙吗?

  • 我想在oracle 12c中创建一个用户,但我遇到了一个问题。输入用户名和psw后,将显示以下警告:ORA-65096:无效的公用用户名或角色名

  • 问题内容: 直到11g版本(包括11g),Oracle中似乎都没有AUTO_INCREMENT的概念。 如何在Oracle 11g中创建行为类似于自动增量的列? 问题答案: 表定义: 触发定义: 更新: IDENTITY 列现在在Oracle 12c上可用: 或指定起始值和增量值,也防止任何插入到标识列(GENERATED ALWAYS)中(同样,仅适用于Oracle 12c +) 另外,Orac

  • 我正在尝试在Oracle 12C中使用Oracle Real Application Security(RAS)实现POC。 我已经在Oracle端使用HR演示完成了RAS设置,运行良好(我使用SQLDeveloper进行了验证) 现在,我正在尝试使用“应用程序用户”(dispatcher)建立java jdbc连接,如下链接所述: http://docs.oracle.com/database/

  • 语句用于通过复制现有表的列从现有表来创建新表。 注意:如果以这种方式创建表,则新表将包含现有表中的记录。 语法: 创建表示例1:复制另一个表的所有列 在此示例中,我们通过复制现有表中的所有列来创建表。 新创建的表命名为并具有与相同的表字段和记录(编号小于的所有记录)。 创建表示例2:复制另一个表的选定列 语法: 下面来看另一个例子: 上面的例子将创建一个名为的新表。 此表包含表中指定的两列:和。