Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/05/2012, 15:28
Avatar de scorpion191191
scorpion191191
 
Fecha de Ingreso: mayo-2012
Ubicación: Costa R
Mensajes: 4
Antigüedad: 12 años
Puntos: 0
Pregunta Stored Procedure en Sql a Postgresql Traducirlo

Buen día Señores, quería ver si me harían el gran favor de ayudarme, resulta que soy muy nuevo en esto de Postgresql, ahorita estoy utilizando la version 9.1 en un servidor Ubuntu 11.04 el cual tengo en una maquina virtual que se conecta por odbc a un Windows 7 (Maquina fisica), desde en el pgAdmin III en win 7 estoy tratando de crear un simple procedimiento almacenado:

Al cual se le ingresan 3 parametros: Hilera_Entrada, Hilera_Salida y Longitud_Hilera_Salida, los dos ultimus pueden venir vacios, y el procedimiento se encarga de contar la cantidad de caracteres de Hilera_Entrada y pasarlos A Hilera_Salida, este sp lo hice en Sqlserver 2005 y sin problemas =)

Se los muestro acá:

Código:
Create Procedure dbo.Procesa_Trama_v2 @Hilera_Entrada varchar(50), @Hilera_Salida varchar(50), @Longitud_Hilera_Salida int
as
set @Hilera_Salida= @Hilera_Entrada
set @Longitud_Hilera_Salida= LEN(@Hilera_Salida)
Select @Hilera_Salida as 'Hilera_Salida', @Longitud_Hilera_Salida as 'Longitud Hilera Salida'

Al momento de realizarlo en Postgresql me topo con que es una cosa totalmente diferente XD, y de mucho investigar se que se usan funciones en ves de sp, y a lo mucho que llegué fue a esto:

Código:
CREATE OR REPLACE FUNCTION procesa_trama_v2(hilera_entrada character varying)
  RETURNS character varying AS
$BODY$
        BEGIN
              Select Hilera_Entrada, length(Hilera_Entrada);
        END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION procesa_trama_v2(character varying)
  OWNER TO postgres;
El cual me permite crearlo y todo, pero ni siquiera se la manera correcta de ejecutarlo, lo estaba ejecutando de la siguiente manera:

Código:
select procesa_trama_v2 ('hola soy una cadena');
La cual me arroja el siguiente error:

Código:
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 "procesa_trama_v2" line 3 at SQL statement

La verdad me estoy volviendo loco, por ello pido alguna orientación, sobre cual es mi fallo, ya sea en la manera de programar la función, traducir el procedimiento a postgresql o en la manera por la cual llamo a la función