Hola Cesar, probé tu función, que aunque devuelve todos los registros
coincidentes, no la cantidad exclusivamente de registros que puede
haber, mi "necesidad" de devolver cantiddad, es pq no sé cuántos
registros puede traer esa consulta(puede tener 1000 o 2000, para carga
de red no sé si s demasiado, debdio a eso, no me gustaría que trajera
más de 500), pq sabiendo la cantidad, si es mayor de 500, me traigo sólo
los 500, y los demás para una futura consulta (si es que es necesario).
No sé si me explico.
Aún así, adapté la consulta de like según me pasaste en el ejemplo, pero
me sigue trayendo 0, es decir, a mí no me funciona, lo dicho, soy gafe:(
No sé si lo estoy haciendo mal, o no se puede lo que yo necesito.
select COUNT(*) INTO devuel from pacientes where apell LIKE
UPPER('|| quote_literal($1) ||');
Me deveulve 0
Muchas gracias
Un saludo
Suso
mira yo tengo esta funcion en postgres
-- Function: cl_cargo_buscar(integer, character varying, integer, integer)
-- DROP FUNCTION cl_cargo_buscar(integer, character varying, integer,
integer);
CREATE OR REPLACE FUNCTION cl_cargo_buscar(m_tipo integer, m_dato
character varying, m_codigo integer, m_clinica integer)
RETURNS SETOF cargo AS
$BODY$
DECLARE
fila cargo%rowtype;
sql character varying;
m character varying;
BEGIN
--1:BUSCAR TODOS LOS REGISTROS
IF m_tipo= 1 THEN
sql = 'SELECT * FROM cargo c, clinica cl
WHERE c.cl_cod=cl.cl_cod
AND c.cl_cod='|| m_clinica || ' ORDER BY cg_cod ';
END IF;
--2:BUSCAR REGISTROS DE ACUERDO AL NOMBRE O PARTE DE EL
IF m_tipo = 2 THEN
sql = 'SELECT * FROM cargo c, clinica cl
WHERE c.cl_cod=cl.cl_cod
AND cg_nombre like UPPER('|| quote_literal($2) ||') ' || '
AND c.cl_cod='|| m_clinica ;
END IF;
--3:BUSCAR REGISTROS DE ACUERDO AL CODIGO
IF m_tipo=3 THEN
sql = 'SELECT * FROM cargo c, clinica cl
WHERE c.cl_cod=cl.cl_cod
AND c.cl_cod='|| m_clinica || '
AND cg_cod ='|| m_codigo;
END IF;
FOR fila IN EXECUTE sql
LOOP
RETURN NEXT fila;
END LOOP;
RETURN;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION cl_cargo_buscar(integer, character varying, integer,
integer) OWNER TO postgres;
y la llamo de la siguiente forma en visual basic
select * from cl_cargo_buscar(2,'p%',0,1)
me devuelve
--
Sin más que decir se despide de Usted, muy atentamente
Cesar Erices Vergara
Ingeniero en Gestión Informática
Analista de Sistema
Santiago - Chile
--
TIP 6: ¿Has buscado en los archivos de nuestra lista de correo?
http://archives.postgresql.org/pgsql-es-ayuda