Retroceder   Foros del Web > Programación para sitios web > Bases de Datos > PostgreSQL

Respuesta
 
Herramientas Desplegado
Antiguo 16-mar-2008, 18:25   #1 (permalink)
xtstgo ha deshabilitado el karma
 
Fecha de Ingreso: octubre-2005
Mensajes: 16
llamada a function

Amigos les quiero pedir ayuda, soy un novato q quiere empezar a trabajar con Postgres, TE go el siguiente codigo como function:

Código PHP:
CREATE OR REPLACE FUNCTION "public"."p_accesousuario" (v_usu_id charRETURNS varchar AS
$body$
BEGIN
  select 1 from sc_usuario
   where usu_id 
v_usu_id    
   
   if 
not found THEN
           
return "Valido";         
   else
           return 
"Invalido";
   
end if;  
END;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER
he intento llamarlo de la siguiente manera:

Código PHP:
select from p_accesousuario("carlos"); 
y el resultado de este es:

Código PHP:
ERROR:  column "carlos" does not exist at character 31 
les agradeceria su ayuda.
xtstgo está desconectado   Responder Citando
Antiguo 16-mar-2008, 23:34   #2 (permalink)
bransh no se puede cailificar en este momento
 
Fecha de Ingreso: enero-2008
Mensajes: 24
Re: llamada a function

Hola como andas.

El error se debe a que estas usando doble comillas para "Invalido" y "Valido".
Deberias usar comillas simples.

Por otra parte, espero que tengas claro que:

SELECT 1 FROM Tabla ...

no esta bien. Deberias usar atributos, a pesar que para lo que queres hacer funciona.

Salu2
bransh está desconectado   Responder Citando
Antiguo 17-mar-2008, 10:31   #3 (permalink)
xtstgo ha deshabilitado el karma
 
Fecha de Ingreso: octubre-2005
Mensajes: 16
Re: llamada a function

bransh;

Te agradezco tu respuesta, la verdad q hice los cambios y creo q avance en algo
pero ahora me despliega lo siguiente:

Código PHP:
ERROR:  query has no destination for result data
HINT
:  If you want to discard the results of a SELECT, use PERFORM instead.
CONTEXT:  PL/pgSQL function "p_accesousuario" line 2 at SQL statement 
y por lo que entiendo y veo en la funcion si estoy retornando un valor que es del tipo varchar.

De Antemano muchas gracias..
xtstgo está desconectado   Responder Citando
Antiguo 17-mar-2008, 10:56   #4 (permalink)
bransh no se puede cailificar en este momento
 
Fecha de Ingreso: enero-2008
Mensajes: 24
Re: llamada a function

Hola xtstgo, simplemente reemplaza SELECT por PERFORM como te dice en el mensaje.

No te lo adverti porque en mi caso el primer error que surgio fue ese y como no habias comentado sobre el mismo, pense que se podria deber a una version distinta que estemos usando.

Lo que dice el error es que deberias usar PERFORM y no SELECT cuando el resultado no tiene un destino. Por ejemplo si en vez de hacerla como la hiciste a la funcion, la realizaras con un:

Código:
    IF NOT EXISTS (SELECT ....) THEN
        RETURN 'Invalido';
    ELSE
        RETURN 'Valido'; 
    END IF;
en este caso, se utiliza el resultado de la consulta para evaluar la existencia o no de los datos buscados y si se puede usar efectivamente SELECT.



Salu2
bransh está desconectado   Responder Citando
Antiguo 17-mar-2008, 14:36   #5 (permalink)
xtstgo ha deshabilitado el karma
 
Fecha de Ingreso: octubre-2005
Mensajes: 16
Re: llamada a function

bransh;

ok te agradesco tu ayuda, me funciono cambie el IF que tenia por el codigo tuyo y segui utilizando el select * from ... y me trajo el dato q yo queria.

Una vez mas te lo agradezco.
Pero me parece que te voy a seguir molestando...jaja.

Gracias
Gerardo
xtstgo está desconectado   Responder Citando
Antiguo 17-mar-2008, 16:36   #6 (permalink)
bransh no se puede cailificar en este momento
 
Fecha de Ingreso: enero-2008
Mensajes: 24
Re: llamada a function

jaja... no hay problema, me alegro que te haya servido.

Salu2
bransh está desconectado   Responder Citando
Antiguo 18-mar-2008, 06:01   #7 (permalink)
seyko ha deshabilitado el karma
 
Fecha de Ingreso: febrero-2007
Mensajes: 975
Re: llamada a function

Buenas, viendo que empiezas un par de consejos:

Si vas a devolver valido/invalido deberias retornar un boolean.

Para lo que haces en la funcion no necesitas plpgsql, la "norma" no escrita dice que si se puede hacer con sql no se usa plpgsql (menos eficiente).

Salu2
seyko está desconectado   Responder Citando
Antiguo 18-mar-2008, 15:09   #8 (permalink)
xtstgo ha deshabilitado el karma
 
Fecha de Ingreso: octubre-2005
Mensajes: 16
De acuerdo Re: llamada a function

Se agradece tu consejo Seiko...
xtstgo está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 20:09.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93