RE:Convertir tipo Long a Varchar2(50)
Si en la tabla donde esta la columna de tipo long hay por lo menos 1 fila con datos en esa columna, no te permitira cambiar el tipo de dato a varchar2. Lo que podrias hacer, es crear otra tabla temporal en base a la que deseas cambiar.
En la tabla temporal inserta todos los reigstros de la que queres cambiar, es posible que no te deje hacerlo con un (INSERT INTO ... SELECT...) por lo que tendras que hacerlo creando un cursor e insertar fila, por fila.
una vez que tengas tu tabla temporal con la misma informacion que la tabla que deseas cambiar, actualiza en esta ultima, la columna de tipo long y la volves nula, al estar nula esta columna, ya podras cambiar el tipo a varchar2.
una vez cambiado el tipo deberas de actualizar en base a la temporal, pero solo el campo que cambiaste, nuevamente si no lo podes hacer con un (UPDATE....) tendras que utilizar un cursor y actualizar una por una.
Si la tabla no contiene datos, si te permitira cambiar el tipo a varchar2 con el comando ALTER TABLE.