Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/06/2010, 17:43
joluro_50
 
Fecha de Ingreso: abril-2010
Mensajes: 12
Antigüedad: 14 años, 1 mes
Puntos: 0
Ayuda con FUNCION para insertar o actualizar registros

Antes que nada les envio un saludo a todos y ojalá que me puedan apoyar en un problema que tengo. Les explico, antes había trabajado con PostgreSQL programando funciones y todo muy bien, pero ahora que me paso a SQL Server 2005 tengo algunas broncas. En lo que necesito que me ayuden es en lo siguiente: tengo una función programada en PL/pgSQL (Procedural Language/PostgreSQL) que sirve para insertar (si el valor del primer parámetro es 0) y actualizar (si el valor del primer parámetro es diferente de 0 y actualiza por medio de este, ya que se refiere al ID de la tabla y de no existir manda un error) que es el siguiente:

Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION tel.spimabipa (INTEGER, VARCHAR, VARCHAR) RETURNS text
  2. AS $proc$
  3. DECLARE
  4.     vid_abipa ALIAS FOR $1;
  5.     vabreva ALIAS FOR $2;
  6.     vipa ALIAS FOR $3;
  7.     vretval text;
  8. BEGIN
  9.     IF (vid_abipa=0) THEN
  10.         INSERT INTO tel.tb_abipa (id_abipa, abreva, ipa)
  11.             VALUES (NEXTVAL('tel.seqabipa'), vabreva, vipa);
  12.         vretval:='Valores insertados con exito';
  13.     ELSE
  14.         UPDATE tel.tb_abipa
  15.             SET abreva=vabreva, ipa=vipa               
  16.             WHERE id_abipa=vid_abipa;
  17.         IF NOT (FOUND) THEN
  18.             vretval:='Error: algun dato es incorrecto';
  19.         ELSE
  20.             vretval:='Valores actualizados con exito';
  21.         END IF;
  22.     END IF;
  23.     RETURN vretval;
  24. END; $proc$
  25. LANGUAGE 'plpgsql';

El primer problema es que no tengo ni idea como traducir la parte ALIAS FOR, esto lo que hace es meter en variables lo parámetros de la función.
Y lo segundo que que no se cuál es la equivalencia de IF NOT (FOUND) THEN.

En verdad si alguien me pudiera echar la mano les estaría muy agradecido. Y por cierto si alguien tiene problemas con PostgreSQL yo les podría ayudar en algo, ya llevo un buen tiempo trabajando con esa base de datos.

Última edición por joluro_50; 14/06/2010 a las 11:55 Razón: Código SQL