Que falla en mi bloque pl/sql para crear un usuario en la Base de Dato??

Que falla en mi bloque pl/sql para crear un usuario en la Base de Dato?? ellidr 1 Abril, 2015 - 16:39

Hola compañeros de este grandioso foro de bases de datos en esta ocasión tengo un problema con un bloque que estoy creando esta es la sintaxis que uso:

 

La idea es que haga un select ala dba_users y consulte el usuario si existe mande el error de que ya existe de lo contrario lo crea, al correrlo pide el login y el password el detalle es que me manda error anexo el error lo estoy haciendo conectado con el usuario system 

SET serveroutput ON DECLARE v_usuario varchar2(8):='&LOGIN'; v_cusuario dba_users.username%TYPE; v_v_password varchar2(30):='&PASSWORD'; BEGIN SELECT USERNAME INTO v_cusuario FROM dba_users WHERE username=v_usuario; dbms_output.put_line('FALLO!! el usuario "'||v_usuario||'" ya existe en la Base de Datos'); EXCEPTION WHEN NO_DATA_FOUND THEN CREATE USER v_usuario; IDENTIFIED BY v_password PASSWORD EXPIRE; DEFAULT TABLESPACE USERS; TEMPORARY TABLESPACE TEMP; PROFILE DEFAULT; ACCOUNT UNLOCK; dbms_output.put_line('EXITO!! fue creado el usuario en la Base de Datos '||v_usuario);) END; /

 

Aclaro que soy novato en esto para mi esta bien la sintaxis 

 

Creo que te falla porque estás poniendo punto y coma al final de cada linea, y sólo has de ponerlo al final de cada sentencia:

..
WHEN NO_DATA_FOUND THEN
CREATE USER v_usuario
IDENTIFIED BY v_password PASSWORD EXPIRE
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
PROFILE DEFAULT
ACCOUNT UNLOCK;

 

Saludos!

Muchas gracias por la ayuda Carlos ,la solución la muestro en el siguiente query por si alguien le sirve ya me crea el usurio a nivel Base de Datos.

SET serveroutput ON DECLARE v_usuario varchar2(8):='&LOGIN'; 
v_password varchar2(8):='&PASSWORD; 
v_cusuario dba_users.username%TYPE; 
BEGIN SELECT USERNAME INTO v_cusuario FROM dba_users WHERE username=v_usuario; 
dbms_output.put_line('El usuario "'||v_usuario||'" ya existe en la Base de Datos'); 
EXCEPTION WHEN NO_DATA_FOUND THEN EXECUTE IMMEDIATE 'CREATE USER '|| v_usuario||' IDENTIFIED BY '||v_password||' PASSWORD EXPIRE DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP PROFILE DEFAULT ACCOUNT UNLOCK'; 
dbms_output.put_line('fue creado el usuario "'||v_usuario||'" en la BD. '); END; /