Puede examinar una variable especial ENCONTRADA de un tipo booleano. De la documentación:
FOUND comienza falso dentro de cada llamada de función PL / pgSQL. Lo establece cada uno de los siguientes tipos de declaraciones:
Una instrucción SELECT INTO establece FOUND verdadero si se asigna una fila, falso si no se devuelve ninguna fila.
Una instrucción PERFORM establece FOUND verdadero si produce (y descarta) una o más filas, falso si no se produce ninguna fila.
Las instrucciones UPDATE, INSERT y DELETE establecen FOUND verdadero si al menos una fila se ve afectada, falso si ninguna fila se ve afectada.
Una instrucción FETCH establece FOUND verdadero si devuelve una fila, falso si no se devuelve ninguna fila.
Una instrucción MOVE establece FOUND verdadero si reposiciona con éxito el cursor, de lo contrario, falso.
Una instrucción FOR o FOREACH establece FOUND verdadero si itera una o más veces, de lo contrario es falso. FOUND se configura de esta manera cuando sale el bucle; dentro de la ejecución del bucle, FOUND no se modifica mediante la instrucción del bucle, aunque podría modificarse mediante la ejecución de otras instrucciones dentro del cuerpo del bucle.
Las declaraciones RETURN QUERY y RETURN QUERY EXECUTE establecen FOUND true si la consulta devuelve al menos una fila, false si no se devuelve ninguna fila.
Otras declaraciones PL / pgSQL no cambian el estado de FOUND. Tenga en cuenta en particular que EXECUTE cambia la salida de GET DIAGNOSTICS, pero no cambia FOUND.
FOUND es una variable local dentro de cada función PL / pgSQL; cualquier cambio en él afecta solo a la función actual.
select into
que no devuelve datos aún generará una excepción, ¿verdad?