Ver Mensaje Individual
  #2 (permalink)  
Antiguo 11/08/2010, 16:14
Avatar de huesos52
huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Concatenacion variable en Interval

death_nemesis te daré la explicación para que no vuelvas a tener problemas con estas cosas.

Dentro de un procedimiento, las comillas sencillas son utilizadas para hacer alusión a valores de texto o valores en consulta de tipo date o varchar.

si ves este ejemplo:
CREATE FUNCTION algunafuncion() RETURNS INTEGER AS ’
DECLARE
cantidad INTEGER := 30;
BEGIN
RAISE NOTICE ’’La cantidad aquí es %’’,cantidad; -- La cantidad aquí es 30
cantidad := 50;
--
-- Crea un subbloque
--
DECLARE
cantidad INTEGER := 80;
BEGIN
RAISE NOTICE ’’La cantidad aquí es %’’,cantidad; -- La cantidad aquí es 80
END;
RAISE NOTICE ’’La cantidad aquí es %’’,cantidad; -- La cantidad aquí es 50
RETURN cantidad;
END;
’ LANGUAGE ’plpgsql’;


Fijate que después del AS, el cuerpo del procedimiento es abierto con comillas sencillas y cada que en el begin se requiere imprimir un texto, es necesario hacer doble uso de la comilla para que no cierre la comilla que delimita el procedimento. Para nuevas versiones de postgres para delimitar, es posible utilizar también el simbolo $$ o $body$ o lo que quieras que esté delimitado por el simbolo $ con el fin de simplificar el manejo indistriminado de comillas sencillas y tener un codigo mas limpio. Tambien existe una función llamada quote_literal que facilita el manejo de estas molestas comillas.

Entonces... después de toda esta chachara una solución sería:
Código SQL:
Ver original
  1. dias := '2 day';
  2. fecha:= fecha + INTERVAL || '  ' || quote_literal(dias);
  3.  
  4. o
  5.  
  6. dias := 2;
  7. fecha:= fecha + INTERVAL || '  '' ' || dias || ' day '' ';

No he probado nada, pero esa es la idea.

se entiende?

saludos death_memesis
__________________
Without data, You are another person with an opinion.
W. Edwads Deming