Oracle中批量添加用户的存储过程

本文介绍了一种使用PL/SQL过程批量创建Oracle数据库中特定表空间和用户的方案。该过程可以根据输入的班级名称、起始编号、结束编号以及数据文件目录来自动创建表空间,并为每个指定编号范围内的学生创建具有唯一用户名的数据库用户。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
 
CREATE OR REPLACE PROCEDURE CREATE_STUDENTS(CLASS_NAME IN VARCHAR2,
                                            START_NUM  IN NUMBER,
                                            END_NUM    IN NUMBER,
                                            DATA_DIR   IN VARCHAR2) IS
  SQL_STR       VARCHAR2(250);
  TAB_SPC       VARCHAR2(20);
  USR_STR       VARCHAR2(20);
  DATA_FILE_DIR VARCHAR2(255);
BEGIN
  DATA_FILE_DIR := DATA_DIR;
  IF DATA_FILE_DIR IS NULL THEN
    DATA_FILE_DIR := 'C:/ORACLE_DB/ORACLE10/';
  END IF;
  IF INSTR(DATA_FILE_DIR, '/', LENGTH(DATA_FILE_DIR)) < 0 THEN
    DATA_FILE_DIR := DATA_FILE_DIR || '/';
    DBMS_OUTPUT.PUT_LINE(DATA_FILE_DIR);
  END IF;
  TAB_SPC := CLASS_NAME;
  --创建表空间,一个班级共用一个表空间即可
  SQL_STR := 'CREATE TABLESPACE ' || TAB_SPC || ' DATAFILE ''' ||
             DATA_FILE_DIR || TAB_SPC ||
             '.DBF'' SIZE 5M AUTOEXTEND ON NEXT 2M MAXSIZE 99M LOGGING';
  EXECUTE IMMEDIATE SQL_STR;
  --DBMS_OUTPUT.PUT_LINE(SQL_STR);
  FOR I IN START_NUM .. END_NUM LOOP
    USR_STR := CLASS_NAME || LPAD(TO_CHAR(I), 2, '0');
    --创建用户
    SQL_STR := 'CREATE USER ' || USR_STR || ' IDENTIFIED BY "' || USR_STR ||
               '" DEFAULT TABLESPACE ' || TAB_SPC ||
               ' TEMPORARY TABLESPACE TEMP';
    --DBMS_OUTPUT.PUT_LINE(SQL_STR);
    EXECUTE IMMEDIATE SQL_STR;
    --给权限
    SQL_STR := 'GRANT CONNECT,RESOURCE TO ' || USR_STR;
    --dbms_output.put_line(SQL_STR);
    execute immediate SQL_STR;
  END LOOP;
END;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值