Lists: | pgsql-es-ayuda |
---|
From: | "Cesar Erices" <caerices(at)gmail(dot)com> |
---|---|
To: | "foro postgresql" <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | consulta sobre uso like en procedimientos almacenados |
Date: | 2008-02-26 14:02:11 |
Message-ID: | 1cb5d9840802260602x4856ececp88a3d83a49569b7a@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
Estimados necesito hacer una busqueda con la sentencia like o ilike en un
procedimiento almacenado
CREATE OR REPLACE FUNCTION "public"."Bancos_TraerBancoPorDescripcion"
("pg_catalog"."refcursor", var_descripcion varchar, criterio_busqueda
varchar) RETURNS "pg_catalog"."refcursor" AS
$body$
DECLARE
cursor_salida ALIAS FOR $1;
BEGIN
/* funciona !*/
IF criterio_busqueda = 'igual' THEN
Open cursor_salida For SELECT * FROM bancos WHERE
descripcion = var_descripcion;
RETURN cursor_salida;
END IF;
/* funciona !*/
IF criterio_busqueda = 'cualquier_parte' THEN
Open cursor_salida For SELECT * FROM bancos WHERE
lower(descripcion) ~ var_descripcion;
RETURN cursor_salida;
END IF;
/* NO Funciona !*/
IF criterio_busqueda = 'al_comienzo' THEN
Open cursor_salida For SELECT * FROM bancos WHERE
lower(descripcion) ~ "%" || $2;
RETURN cursor_salida;
END IF;
/*
IF criterio_busqueda = 'al_final' THEN
END IF;
*/
END;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
pero la busqueda por la coincidencia ya sea al inicio o alfinal de la
variable a buscar se cae indicando que
Funciona:
SELECT
"Bancos_TraerBancoPorDescripcion"('cursor_salida','bal','cualquier_parte');
fetch all in cursor_salida
NO Funciona:
SELECT
"Bancos_TraerBancoPorDescripcion"('cursor_salida','bal','al_comienzo');
fetch all in cursor_salida
Error;
*Warning*: pg_query()
[function.pg-query<http://localhost/vall_contabilidad/function.pg-query>]:
Query failed: ERROR: no existe la columna «%» LINE 1: SELECT * FROM bancos
WHERE lower(descripcion) ~ "%" || $1 ^ QUERY: SELECT * FROM bancos WHERE
lower(descripcion) ~ "%" || $1 CONTEXT: PL/pgSQL function
además me gustaria saber como puedo conocer el numero de campos de una
determinada tabla
desde ya muchas gracias...
--
Cesar Erices Vergara
Ingeniero en Gestión Informática
Analista de Sistema
From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
To: | Cesar Erices <caerices(at)gmail(dot)com> |
Cc: | foro postgresql <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: consulta sobre uso like en procedimientos almacenados |
Date: | 2008-02-26 14:15:16 |
Message-ID: | 20080226141516.GE5763@alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
Cesar Erices escribió:
> Error;
>
> *Warning*: pg_query()
> [function.pg-query<http://localhost/vall_contabilidad/function.pg-query>]:
> Query failed: ERROR: no existe la columna «%» LINE 1: SELECT * FROM bancos
> WHERE lower(descripcion) ~ "%" || $1 ^ QUERY: SELECT * FROM bancos WHERE
> lower(descripcion) ~ "%" || $1 CONTEXT: PL/pgSQL function
Usa comillas simples, no dobles. O sea '%' en vez de "%"
--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.