用函数创建用户,还要加上连接和DBA权限,成功返回true,失败返回false。以及怎样调用????? CREATE USER、GRANT用动态SQL execute immediate sql这样执行还有函数不是这样执行得,好象是要放在dml语句里执行,把你这个改成存储过程就可以call creatuser('ccyy','ccyy')了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这样呢?CREATE OR REPLACE PROCEDURE creatuser (username VARCHAR2, passwords VARCHAR2)ISBEGIN EXECUTE IMMEDIATE ' CREATE USER ' || username || ' PROFILE "DEFAULT" ' || ' IDENTIFIED BY ' || passwords || ' DEFAULT TABLESPACE "USERS" ' || 'TEMPORARY TABLESPACE "TEMP" ' || 'ACCOUNT UNLOCK'; EXECUTE IMMEDIATE 'GRANT "CONNECT" TO ' || username || ' WITH ADMIN OPTION'; EXECUTE IMMEDIATE 'GRANT "DBA" TO ' || username || ' WITH ADMIN OPTION'; COMMIT;EXCEPTION WHEN OTHERS THEN ROLLBACK;END creatuser;/ SQL> conn system/manager已连接。SQL> create or replace procedure create_user as 2 begin 3 execute immediate 'create user temp identified by psw 4 execute immediate 'grant dba to temp'; 5 end create_user; 6 /过程已创建。已用时间: 00: 00: 01.61SQL> exec create_user;BEGIN create_user; END;*ERROR 位于第 1 行:ORA-01031: 权限不足ORA-06512: 在"SYSTEM.CREATE_USER", line 3ORA-06512: 在line 1已用时间: 00: 00: 00.80SQL> grant create user to system;授权成功。已用时间: 00: 00: 00.01SQL> exec create_user;PL/SQL 过程已成功完成。已用时间: 00: 00: 00.50SQL> select * from all_users;USERNAME USER_ID CREATED------------------------------ ---------- ----------SYS 0 14-11月-00SYSTEM 5 14-11月-00OUTLN 11 14-11月-00DBSNMP 16 14-11月-00PLATE 41 09-6月 -05AURORA$JIS$UTILITY$ 25 14-11月-00OSE$HTTP$ADMIN 26 14-11月-00AURORA$ORB$UNAUTHENTICATED 27 14-11月-00ORDSYS 28 14-11月-00ORDPLUGINS 29 14-11月-00MDSYS 30 14-11月-00USERNAME USER_ID CREATED------------------------------ ---------- ----------CTXSYS 33 14-11月-00SCOTT 35 14-11月-00ADAMS 36 14-11月-00JONES 37 14-11月-00CLARK 38 14-11月-00BLAKE 39 14-11月-00MTSSYS 40 14-11月-00TEMP 43 19-10月-05已选择19行。已用时间: 00: 00: 00.71SQL> conn temp/psw已连接。SQL> 执行ddl语句需要使用动态sql另:执行ddl语句自动commit;dba角色已经包含了connect功能。 问题:两条SQL查询语句的区别,在NULL的情况下。 按年龄统计SQL问题 请教一个实战问题 关于在开发总Oracle的数据安全问题? Oracle 10g创建存储过程必须先创建包吗? oracle查询语句 请教如何把这个查询的效率提高 个人卖 ORACLE数据库精讲与疑难解析 安装后开始菜单oradb10g_home1里没有Enterprise Manager Console是什么原因? 服装库存基本表的建法,征求大家意见。 一条SQL语句中包含多个INSERT INTO语句,要如何连接才是正确结束???? 請高手指點:求經典SQL語句 求教V$视图
IS
BEGIN
EXECUTE IMMEDIATE ' CREATE USER '
|| username
|| ' PROFILE "DEFAULT" '
|| ' IDENTIFIED BY '
|| passwords
|| ' DEFAULT TABLESPACE "USERS" '
|| 'TEMPORARY TABLESPACE "TEMP" '
|| 'ACCOUNT UNLOCK'; EXECUTE IMMEDIATE 'GRANT "CONNECT" TO ' || username || ' WITH ADMIN OPTION'; EXECUTE IMMEDIATE 'GRANT "DBA" TO ' || username || ' WITH ADMIN OPTION'; COMMIT;
EXCEPTION
WHEN OTHERS
THEN
ROLLBACK;
END creatuser;
/
已连接。
SQL> create or replace procedure create_user as
2 begin
3 execute immediate 'create user temp identified by psw
4 execute immediate 'grant dba to temp';
5 end create_user;
6 /过程已创建。已用时间: 00: 00: 01.61
SQL> exec create_user;
BEGIN create_user; END;*
ERROR 位于第 1 行:
ORA-01031: 权限不足
ORA-06512: 在"SYSTEM.CREATE_USER", line 3
ORA-06512: 在line 1
已用时间: 00: 00: 00.80
SQL> grant create user to system;授权成功。已用时间: 00: 00: 00.01
SQL> exec create_user;PL/SQL 过程已成功完成。已用时间: 00: 00: 00.50
SQL> select * from all_users;USERNAME USER_ID CREATED
------------------------------ ---------- ----------
SYS 0 14-11月-00
SYSTEM 5 14-11月-00
OUTLN 11 14-11月-00
DBSNMP 16 14-11月-00
PLATE 41 09-6月 -05
AURORA$JIS$UTILITY$ 25 14-11月-00
OSE$HTTP$ADMIN 26 14-11月-00
AURORA$ORB$UNAUTHENTICATED 27 14-11月-00
ORDSYS 28 14-11月-00
ORDPLUGINS 29 14-11月-00
MDSYS 30 14-11月-00USERNAME USER_ID CREATED
------------------------------ ---------- ----------
CTXSYS 33 14-11月-00
SCOTT 35 14-11月-00
ADAMS 36 14-11月-00
JONES 37 14-11月-00
CLARK 38 14-11月-00
BLAKE 39 14-11月-00
MTSSYS 40 14-11月-00
TEMP 43 19-10月-05已选择19行。已用时间: 00: 00: 00.71
SQL> conn temp/psw
已连接。
SQL> 执行ddl语句需要使用动态sql
另:执行ddl语句自动commit;dba角色已经包含了connect功能。