Tu procedimiento esta en lo correcto nada mas que no es lo mismo Nulo que vacio y tu estas tratando de comparar vacio con Nulo, cuando la ciudad no la encuentra el valor te regresa Nulo
Código:
SET TERM ^ ;
CREATE PROCEDURE SP_VERIFICA_CIUDAD (
NOMBRE VARCHAR(40))
RETURNS (
RESULTADO INTEGER)
AS
DECLARE VARIABLE CODIGO INTEGER;
DECLARE VARIABLE NOMBREVAR VARCHAR(10);
begin
SELECT CIUDADKEY, CIUDADNOMBRE FROM CCIUDAD
WHERE CIUDADNOMBRE=:nombre
into :codigo, :nombrevar;
if (nombrevar IS NULL) then
resultado=0;
else
resultado=1;
suspend;
end
^
SET TERM ; ^
Saludos