Te estás complicando demasiado para una consulta bastante simple:
Una consulta de este tipo te devuelve la lista de los que están asignados:
Código sql:
Ver originalSELECT IdUsr, NomUsr
FROM Usuarios U INNER JOIN Archivos A ON U.IdUsr = IdUsuario;
Esta otra te devuelve la lista de los que
no están asignados:
SELECT IdUsr, NomUsr
FROM Usuarios U LEFT JOIN Archivos A ON U.IdUsr = IdUsuario
WHERE IdUsuario IS NULL;[/HIGHLIGHT]
En el contexto de lo tratas de lograr, para que te sirva una función que retorna un valor, deberías estar seguro de que en la lista hay
un único usuario que no esté asignado. Si hay dos, la función ya no te sirve y debes resolverlo por consulta que devuelve una tabla.
Existe, si la posibilidad de obtener un solo string, separado por comas, conteniendo todos los ID o todos los nombres de quienes no están asignados, pero eso es otro tema y tampoco se puede resolver por SP o SF, ya que no pueden devolver un BLOB o un TEXT.