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;