Luego de la breve introducción quiero plantearles mi problemita y ver si alguien me puede orientar un poco, es sobre postgres lenguaje que apenas voy trabajando y si bien no es difícil hay cosas que como cualquier novato se me pasan o simplemente no las se.
Tengo una función que me hace un SELECT a varios campos de diferentes tablas y me devuelve el resultado del query, hasta ahí funciona perfectamente ahora lo que necesito es sustituir algunos valores de dos campos en especial. Les pongo mi función y después continuo detallando..
Código:
Bien pues lo que trato es cambiar los valores en mi campo linea.medio, este campo siempre me traerá ya sea un 1 o un 2 o un 3, quiero reemplazar esos números y que me aparezca la palabra RADIO si es 1, la palabra TELEVISION si trae un 2 o que diga PRENSA ESCRITA si contiene un 3.CREATE OR REPLACE FUNCTION obtenerreporte() RETURNS SETOF tdatos AS $BODY$ DECLARE linea tDatos; BEGIN FOR linea IN SELECT tr.fecha_emision, es.nombre, m.nombre, e.medio, c.nombre, c.siglas, tr.tiempo_inicio, tr.tiempo_fin, tr.tiempo_fin - tr.tiempo_inicio, te.nombre, tr.contenido, tr.calificacion FROM transcripcion AS tr INNER JOIN transcripcion_ubicacion AS tu ON (tr.id = tu.transcripcion) INNER JOIN estado AS es ON (tu.estado = es.id) INNER JOIN municipio AS m ON (tu.municipios = m.id) INNER JOIN emisora AS e ON (tr.emisora = e.id) INNER JOIN canal AS c ON (tr.canal = c.id) INNER JOIN transcripcion_tema AS tt ON (tr.id = tt.transcripcion) INNER JOIN tema AS te ON (tt.tema = te.id) ORDER BY tr.fecha_emision DESC LOOP RETURN NEXT linea; END LOOP; --UPDATE linea SET linea.medio = 'RADIO' WHERE lista.medio = '1'; --UPDATE linea SET linea.medio = 'TELEVISION' WHERE lista.medio = '2'; --UPDATE linea SET linea.medio = 'PRENSA ESCRITA' WHERE lista.medio = '3'; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE COST 100 ROWS 1000; ALTER FUNCTION obtenerreporte() OWNER TO postgres;
Al final del LOOP pueden ver que tengo comentados unos UPDATE es porque ya probé utilizando ese comando y me genera un error, cabe destacar que eh intentado poner los UPDATE dentro del LOOP antes y después del RETURN pero siempre me marca el mismo error. Aquí se los muestro..
Código:
Si alguien me pudiera orientar o ayudar con este problema le agradeceré bastante, tal vez lo estoy haciendo mal y ya no puedo modificar esa tabla, cualquier sugerencia es bienvenida, espero haber sido claro o si les queda alguna duda preguntenme para dejar mas claro mi problema. Gracias y un saludo a todos el foro es excelente. ERROR: error de sintaxis en o cerca de «$1» LÍNEA 1: UPDATE $1 SET $2 = 'RADIO' WHERE lista.medio = '1' ^ CONSULTA: UPDATE $1 SET $2 = 'RADIO' WHERE lista.medio = '1' CONTEXTO: SQL statement in PL/PgSQL function "obtenerreporte" near line 41 ********** Error ********** ERROR: error de sintaxis en o cerca de «$1» SQL state: 42601 Context: SQL statement in PL/PgSQL function "obtenerreporte" near line 41