consulta sobre uso like en procedimientos almacenados

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
Thread:
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

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Debora Vert 2008-02-26 14:08:23 BackUp y Restore
Previous Message Sergio Valdes Hurtado 2008-02-26 13:33:20 Re: Error en instalación de 8.3