Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Function Like no funca

Estas en el tema de Function Like no funca en el foro de PostgreSQL en Foros del Web. Estimados, he ledio los post relacionados con Like y no me ha resultado si me ayudan podre distinguei donde esta el error profavor,. Código: CREATE ...
  #1 (permalink)  
Antiguo 03/05/2011, 13:45
Avatar de Epunamun  
Fecha de Ingreso: noviembre-2004
Mensajes: 133
Antigüedad: 19 años, 4 meses
Puntos: 0
Function Like no funca

Estimados, he ledio los post relacionados con Like y no me ha resultado si me ayudan podre distinguei donde esta el error profavor,.

Código:
CREATE OR REPLACE FUNCTION public.sp_buscard(char)

RETURNS public.tces_pro as

$$

SELECT * FROM tces_pro WHERE pro_des ILIKE '%$1%' ORDER BY pro_id;

$$
Esop donde me puedo estar equivocando la ejecuto como sp y em dice k la comuna "Cali" (por ejemplo) no se encuentra, si la ejecuto directa como consulta reemplazo el $1 por 'cali' y me muestra todas las palabras que estan en cali en la columna pro_des, ¿Alguien me puede ayudar por favor?

Gracias.

Muchisimas gracias.
  #2 (permalink)  
Antiguo 03/05/2011, 13:54
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Function Like no funca

Mira el tema de return query

Lo que tratas de hacer no se puede hacer directamente en una función.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 03/05/2011, 14:37
Avatar de Epunamun  
Fecha de Ingreso: noviembre-2004
Mensajes: 133
Antigüedad: 19 años, 4 meses
Puntos: 0
Respuesta: Function Like no funca

Huesos, he vuelto a cambiar la consulta y sigo teniendo problemas

Código:
CREATE OR REPLACE FUNCTION public.sp_buscard(char)

RETURNS SETOF record AS

$$
Begin
          RETURN QUERY
                    SELECT * FROM tces_pro WHERE pro_des ILIKE '%$1%' ORDER BY pro_id;
end;
$$
Me dice que la Columna "A" que es la que igresa como input no existe... :S Gracias por tu ayuda. Pero como puedo resolver ese problemita?
  #4 (permalink)  
Antiguo 03/05/2011, 14:45
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Function Like no funca

En el returns dale así:

RETURNS SETOF tces_pro AS
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 03/05/2011, 15:16
Avatar de Epunamun  
Fecha de Ingreso: noviembre-2004
Mensajes: 133
Antigüedad: 19 años, 4 meses
Puntos: 0
Respuesta: Function Like no funca

Huesitos el mismo Error El nombre de la columna "X" no existe, claramente tengo datos con esos nombres :S, ¿Podra ser algo en las comillas del Like que no este correcto? ¿Lo he probado de distintas formas pero aun no me funciona ?
  #6 (permalink)  
Antiguo 03/05/2011, 15:17
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Function Like no funca

si le quitas el where te devuelve todo el contenido de la tabla sin problemas?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #7 (permalink)  
Antiguo 03/05/2011, 15:32
Avatar de Epunamun  
Fecha de Ingreso: noviembre-2004
Mensajes: 133
Antigüedad: 19 años, 4 meses
Puntos: 0
Respuesta: Function Like no funca

asi es saco el parametro de entrada y todo lo despues del WHere y me devuelve sin problemas todos los campos de la tabla.


salu2 y gracias por ayudarme
  #8 (permalink)  
Antiguo 03/05/2011, 15:37
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Function Like no funca

Epunamun ahora no tengo como ayudarte con una respuesta mas concreta...

pero este tema es similar
http://www.forosdelweb.com/f99/plpgs...5/#post3799720

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #9 (permalink)  
Antiguo 03/05/2011, 15:39
Avatar de Epunamun  
Fecha de Ingreso: noviembre-2004
Mensajes: 133
Antigüedad: 19 años, 4 meses
Puntos: 0
Respuesta: Function Like no funca

Ok muchas gracias lo revisare.
  #10 (permalink)  
Antiguo 03/05/2011, 21:22
Avatar de Epunamun  
Fecha de Ingreso: noviembre-2004
Mensajes: 133
Antigüedad: 19 años, 4 meses
Puntos: 0
Respuesta: Function Like no funca

Mister aun no me resulta mira como la deje completa


Código PHP:
CREATE OR REPLACE FUNCTION public.sp_bus_des
(
  
des  char
)
RETURNS SETOF public.tces_pro AS
$$
DECLARE
       
sql text;

BEGIN

sql 
:= 'SELECT * FROM public.tces_pro WHERE public.tces_pro.pro_des LIKE '||%des%||' ORDER BY public.tces_pro.pro_id';
   
RETURN 
QUERY EXECUTE sql;


END;
$$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
;

ALTER FUNCTION public.sp_bus_des(des char)
  
OWNER TO postgres
Ayuda plz
  #11 (permalink)  
Antiguo 03/05/2011, 21:36
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Function Like no funca

Código SQL:
Ver original
  1. SQL := 'SELECT * FROM public.tces_pro WHERE public.tces_pro.pro_des LIKE ''%'||des||'%'' ORDER BY public.tces_pro.pro_id';

así debe ir el sql. asi si te debe salir.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #12 (permalink)  
Antiguo 04/05/2011, 14:21
Avatar de Epunamun  
Fecha de Ingreso: noviembre-2004
Mensajes: 133
Antigüedad: 19 años, 4 meses
Puntos: 0
Respuesta: Function Like no funca

Estimado El mismo Error , no existe la columna "x". lo probe con comillas " y colocando dos comillas simples
  #13 (permalink)  
Antiguo 04/05/2011, 15:07
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Function Like no funca

yo acabo de hacer una prueba y me funciona perfecto.

Debes tener algo mal.

Postea toda la función con los cambios que te mencioné.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #14 (permalink)  
Antiguo 04/05/2011, 21:21
Avatar de Epunamun  
Fecha de Ingreso: noviembre-2004
Mensajes: 133
Antigüedad: 19 años, 4 meses
Puntos: 0
Respuesta: Function Like no funca

Aca esta la funcion completita.

Código PHP:
CREATE OR REPLACE FUNCTION public.sp_bus_des
(
  
des  char
)
RETURNS SETOF public.tces_pro AS
$$
DECLARE 
       
sql text

BEGIN 

sql 
:= 'SELECT * FROM public.tces_pro WHERE public.tces_pro.pro_des LIKE ''%'||des||'%'' ORDER BY public.tces_pro.pro_id'
    
RETURN 
QUERY EXECUTE sql


END;
$$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
;

ALTER FUNCTION public.sp_bus_des(des char)
  
OWNER TO postgres
Gracias por ayudarme pero estoy enfermo con la consulta!!!! creeme
  #15 (permalink)  
Antiguo 05/05/2011, 07:34
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Function Like no funca

Mira esta secuencia.

hice una tabla como la tuya.
copié y pegué tu función sin cambiarle una sola coma.

Código SQL:
Ver original
  1. pruebas=> CREATE TABLE tces_pro(pro_id INTEGER,pro_des TEXT);
  2. CREATE TABLE
  3. pruebas=>  INSERT INTO tces_pro VALUES(1,'prueba1');
  4. INSERT 0 1
  5. pruebas=>  INSERT INTO tces_pro VALUES(2,'prueba2');
  6. INSERT 0 1
  7. pruebas=> CREATE OR REPLACE FUNCTION public.sp_bus_des
  8. pruebas-> (
  9. pruebas(>   des  CHAR
  10. pruebas(> )
  11. pruebas-> RETURNS SETOF public.tces_pro AS
  12. pruebas-> $$
  13. pruebas$> DECLARE
  14. pruebas$>        SQL text;
  15. pruebas$>
  16. pruebas$> BEGIN
  17. pruebas$>
  18. pruebas$> SQL := 'SELECT * FROM public.tces_pro WHERE public.tces_pro.pro_des LIKE ''%'||des||'%'' ORDER BY public.tces_pro.pro_id';
  19. pruebas$>
  20. pruebas$> RETURN QUERY EXECUTE SQL;
  21. pruebas$>
  22. pruebas$>
  23. pruebas$> END;
  24. pruebas$> $$
  25. pruebas-> LANGUAGE 'plpgsql'
  26. pruebas-> VOLATILE
  27. pruebas-> CALLED ON NULL INPUT
  28. pruebas-> SECURITY INVOKER;
  29. CREATE FUNCTION
  30. pruebas=>
  31. pruebas=> ALTER FUNCTION public.sp_bus_des(des CHAR)
  32. pruebas->   OWNER TO postgres;
  33. ALTER FUNCTION
  34. pruebas=> SELECT *FROM sp_bus_des('1');
  35.  pro_id | pro_des
  36. --------+---------
  37.       1 | prueba1
  38. (1 fila)
  39.  
  40.  
  41. pruebas=> SELECT *FROM sp_bus_des('2');
  42.  pro_id | pro_des
  43. --------+---------
  44.       2 | prueba2
  45. (1 fila)
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #16 (permalink)  
Antiguo 05/05/2011, 08:40
Avatar de Epunamun  
Fecha de Ingreso: noviembre-2004
Mensajes: 133
Antigüedad: 19 años, 4 meses
Puntos: 0
Respuesta: Function Like no funca

podra ser que en mi tabla el campo pro_des es de tipo varchar, y tu lo declaraste como text, puede estar ahi el error pork todo lo demas es identico, lo reviso y te cuento gracias.
  #17 (permalink)  
Antiguo 05/05/2011, 09:06
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Function Like no funca

No tiene nada que ver.
Sea varchar o text debe operar igual.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #18 (permalink)  
Antiguo 05/05/2011, 12:41
Avatar de Epunamun  
Fecha de Ingreso: noviembre-2004
Mensajes: 133
Antigüedad: 19 años, 4 meses
Puntos: 0
Respuesta: Function Like no funca

sigo con el mismo problema, mmm mi motor es 9.0 algo por ahi podra ser?
  #19 (permalink)  
Antiguo 05/05/2011, 12:49
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Function Like no funca

No. Yo también trabajo sobre 9.0

Seguro seguiste el paso a paso de la función que te puse?
Es bastante clara.

Hagamos algo.
Si utilizas pg_admin parate en la tabla y postea la sentencia CREATE TABLE de la tabla tces_pro.
Pon las sentencias INSERT que llenan la tabla.
La función ya está posteada.

Reconstruyo todo el ambiente y miramos que puede estar pasando.

Cita:
no existe la columna "x". lo probe con comillas " y colocando dos comillas simples
Existe una columna X?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #20 (permalink)  
Antiguo 05/05/2011, 12:53
Avatar de Epunamun  
Fecha de Ingreso: noviembre-2004
Mensajes: 133
Antigüedad: 19 años, 4 meses
Puntos: 0
Respuesta: Function Like no funca

no pork "X" es el caracter de entrada por eso lo puse en comillas, si coloco caracter "Y" me dice que no existe la columna Y, reconstririre todo de nuevo ok ahi te comento.
  #21 (permalink)  
Antiguo 11/05/2011, 10:43
Avatar de Epunamun  
Fecha de Ingreso: noviembre-2004
Mensajes: 133
Antigüedad: 19 años, 4 meses
Puntos: 0
Respuesta: Function Like no funca

Elimine todo, creee todo el ambien de nuevo y copie la misma consulta que esta aca en el dforo y el mismo error jjajajajajajaj ya no se que hacer pfffffffffffff
  #22 (permalink)  
Antiguo 12/05/2011, 16:11
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 7 meses
Puntos: 7
Respuesta: Function Like no funca

El problema está en las comillas
__________________
Gracias de todas todas
-----
Linux!

Etiquetas: function
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:46.