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

Responder a