Re: funcion no existe

From: Miguel Rodríguez Penabad <penabad(at)gmail(dot)com>
To: "Crispin T(dot)" <cris(dot)emis(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: funcion no existe
Date: 2007-06-27 22:18:27
Message-ID: 95335e4e0706271518w3983e750qc4bedb0e93dfc9c7@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El 27/06/07, Crispin T. <cris(dot)emis(at)gmail(dot)com> escribió:
> hola a todos los de la lista tengo una pregunta sobre funcion plpgsql la
> funcion es algo asi
>
>
> CREATE OR REPLACE FUNCTION sumaa(tipo int2)
> RETURNS int2 $$ AS
> BEGIN
> RETURN tipo + 1;
> END
> $$
> LANGUAGE ' plpgsql'
>
> para ejecutar
> SELECT sumaa(5);
> pero me dice que la funcion no existe
>
> lo mismo pasa con cualquier funcion que creo
>
> S.O. ubuntu 7.04
>
> nota al querer crear la funcion en plpgsql me decia que no habia el
> lenguaje asi que hice
> create language plpgsql e instalo el lenguaje (eso creo ) no genero error y
> en pgadmin puedo ver el lenguaje

Dos cosas en la creación de la función:
.. RETURNS int2 $$ AS .. no es válido
será RETURNS int2 AS $$ ...
y el lenguage no es ' plpgsql' con el espacio al inicio, sino
simplemente plpsql (ni necesitas las comillas).

Por lo tanto, NO HA PODIDO CREAR LA FUNCIÓN. Si sí la ha creado quiere
decir que no has copiado/pegado la definición, sino que la has
tecleado de nuevo con lo que puedes introducir errores. De hecho has
introducido 2, por lo que siempre es mejor copiar y pegar lo que no
funcione.

En cualquier caso: Si la función es sumaa(int2), se espera algo de
tipo int2, y el 5 por defecto (creo que) es un int.
Si haces un cast, funciona:
select sumaa(5::int2);
sumaa
-------
6
(1 row)

¿Por que no crearla directamente con el parámetro tipo int?

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2007-06-27 22:39:35 Re: funcion no existe
Previous Message Crispin T. 2007-06-27 21:53:30 funcion no existe