Tengo una pequeña duda y me gustaría que alguien me aclarara un concepto...
Al ejecutar la siguiente select:
SELECT U.ID_USER FROM MICRO.TBL_USER U WHERE U.USERNAME = 'MACGREGOR'
Si el usuario existe me devuelve el identificador, pero si no existe no devuelve nada. Cuando digo nada me refiero a que no devuelve NULL, devuelve nada de nada! :(
Pensaba que retornaba NULL de manera que he utilizado esa consulta dentro de la siguiente:
SELECT CASE WHEN S.ID_USER IS NOT NULL THEN 0 ELSE (SELECT MAX(U.ID_USER)+1 FROM MICRO.TBL_USER U) END
FROM (SELECT U.ID_USER FROM MICRO.TBL_USER U WHERE U.USERNAME = 'MACGREGOR')S
La idea es que retorne 0 si el nombre de usuario existe o el primer identificador libre para añadir un nuevo usuario... Si el usuario existe retorna 0 si no existe, no retorna nada :(
Yo programo en Perl para conectar con Oracle, y puedo solucionar el problema lanzando dos consultas y controlando desde Perl lo que me devuelve Oracle, pero gastaría más recursos y sería más lento...
Además me corroe la curiosidad de saber que pasa y porque!
Alguien me puede hechar una mano?? Gracias.