Éstos son los datos de ese campo:
ALTER TABLE pacientes ADD COLUMN apell character varying(40);
ALTER TABLE pacientes ALTER COLUMN apell SET STORAGE EXTENDED;
ALTER TABLE pacientes ALTER COLUMN apell SET NOT NULL;
Aunque estoy por darme por vencido, y ejecutar la consulta desde vb6, que sí me funciona
correctamente,sin necesidad de llamar a la function de postgres, me devuelve el número de
registros mediante un recordset obtenido mediante el like, no sé, lo veo "complicado" por no
decir otra cosa:(
Aunque me gustaría saber más que nada, el por qué no funciona como debe, he consultado en el
manual, varias páginas(bastantes, hasta he visto casos ligeramente parecidos, en los que han
intervenido, hace algunos años, Edwin y/o Alvaro creo recordar haber visto), y me he guiado por
la infinidad de páginas que he visto, pero no es correcto (como yo lo tengo), pq no funciona...
Gracias
Un saludo
Suso
El día 28 de noviembre de 2009 11:50, suso <[email protected]> escribió:
Este es el campo por el cual hace la busqueda, no debe devoler registros
como tal, sino la cantidad de registros que empiecen por la letra "x", es
letra es la que le paso a la function desde mi programa, es decir:
select cont_reg( '" & cadena_que_le_paso & "')
cadena_que_le_paso procede de un textbox, que normalmente será la inicial
del campo apellido, puede ser 'P', puede ser 'S', etc, si hay mas de 500
registros, empezaría por esa letra+ una segunda letra, o sea, 'PE' ó 'PI', o
la combinación que sea.
estos son los datos en los que debe mirar, en el campo apell
"PIPOS"
"UNO"
"LOPEZ"
"POPO"
"UNO"
"PEPET"
"AFONSO"
"JOSEFA"
"SANCHA"
"ESTEVEZ"
"BUCK"
"BELLON"
"GARCIA"
probá
LIKE $e$'$e$ || apelli || $e$'%$e$;
El día 28 de noviembre de 2009 11:28, suso <[email protected]> escribió:
Hola Emanuel
2009/11/27 suso <[email protected]>:
Hola de nuevo, por favor, a ver si alguien me puede decir pq no
funciona
ésta consulta, incluso si la ejecuto dede pgadmin, postgres 8.4 y
windows
xp.
select count(*) into devuel from clientes where apell like '" || apelli
||
"%'
select count(*) into devuel from clientes where apell like 'P%'
Esto si funciona, si hago su "equivalente" desde vb6 va sin problemas.
Otros colisteros me han dicho variantes, pero ninguna va.
por ejemplo:
select count(*) into devuel from clientes where apell like '" & apelli
&
"%'
select count(*) into devuel from clientes where apell like ' & apelli &
%'
select count(*) into devuel from clientes where apell like ' apelli &
%'
Este tipo de cosas
Si apelli es una columna, hay algo mal en la composición de la
expresión.
apelli es una valor que le paso a la function, voy a poner el código
completo
CREATE OR REPLACE FUNCTION cont_reg(apelli character varying)
RETURNS integer AS
$BODY$
DECLARE
devuel integer;
BEGIN
if apelli is not null THEN
select count(*) into devuel from pacientes where apell like '" || apelli
||
"%';
la cadena contiene ' ?
end if;
if found then
return devuel;
else
return 0;
end if;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
ALTER FUNCTION cont_reg(character varying) OWNER TO postgres;
Podrías mostar el registro que supuestamente te debería devolver?
Aún esperamos el registro ;)
--
TIP 9: visita nuestro canal de IRC #postgresql-es en irc.freenode.net