想动态的创建一个用户并授予权限  还要登录
DEF v_constring = tangbin/123; 
 
 set serveroutput on feedback on; --verify off termout off
 
 
 
 declare
 v_count number(3) default 0;
 v_statement varchar2(300);
 v_username varchar2(50);
 v_password varchar2(50);
 
 begin
 v_username := '&v_username';
 v_password := '&v_password';
 select count(1) into v_count from dba_users where username=upper(''||v_username||'');
 if v_count <>0 then
  v_statement :='drop user '||v_username||' cascade';
  execute immediate v_statement;
  end if;
  v_statement := 'create user '||v_username||' identified by "'||v_password||'"';
  execute immediate v_statement;
  dbms_output.put_line('********创建用户'||v_username||'成功***********');
  v_statement :='grant connect,create session,create procedure,'
             || 'create trigger,create sequence,create table to'
             || ' '||v_username;
  EXECUTE IMMEDIATE v_statement;
  -- conn &v_constring;
--  v_statement := 'connect ' ||v_username||'''/'||v_password;
--  dbms_output.put_line(v_statement);
-- EXECUTE IMMEDIATE v_statement;
--  dbms_output.put_line('用户连接成功');
  EXCEPTION 
  when others then
  dbms_output.put_line(sqlerrm);           
 end;
 / connect &v_constring;   //想在这根据我自己任意输入创建的用户名登录  不知道可以不 

解决方案 »

  1.   

    不明白为什么要这么做,要实现多用户登录也用不着非要为每个用户建一个数据库账户啊 ,
    可以考虑建一个表,维护用户的帐号密码,用户登录的时候检测帐号密码是否在表中有对应的数据
    有的话直接登录到固定的数据库用户
      

  2.   

    我是新手  才学了15天  这是一种没有想到的方法  感谢
      

  3.   

    不利于管理,这些应该有数据库管理员来做