![]() |
función+disparador que calcule un porcentaje a partir de dos campos Saludos Estoy buscando de aprender a usar funciones y disparadores, con lo cual me inicio con una cosa sencilla... Una tabla con un campo de total de habitantes, y otro con total de habitantes con celulares, deseo saber a qué porcentaje equivale... he probado con: [SQL]CREATE FUNCTION cporc() RETURNS "trigger" AS ' DECLARE resultado boolean; BEGIN EXECUTE (vs_aseo/v_ocup) *100; return NEW; END; ' LANGUAGE plpgsql; CREATE TRIGGER dporc AFTER INSERT ON cobertura FOR EACH ROW EXECUTE PROCEDURE cporc(); [/SQL] pero, obviamente, no está bien... Cualquier orientación, será siempre bien recibida... gracias de una |
Re: función+disparador que calcule un porcentaje a partir de dos campos Vale... más datos, más pruebas: plpgsql está para la BD que estoy usando! La tabla tiene: poblacion -> integer celulares -> integer porcentaje -> float La función y el disparador, que se crean sin ningún problema: Código: CREATE OR REPLACE FUNCTION fporcentaje()insert into poblacion (total, celulares) values (100,60) y el Error: Código: Error de SQL: |
Re: función+disparador que calcule un porcentaje a partir de dos campos Asumiendo la responsabilidad, sigo colocando mis comentarios... Guiandome de algunos apuntes, como este: http://es.tldp.org/Postgresql-es/web...mer/x1503.html he probado algunas cosas... a la tabla he agregado un campo fecha, y la función y el disparador han quedado así: Código: CREATE OR REPLACE FUNCTION fporcentaje() RETURNS "trigger"sí quito de la función la línea: NEW.registro := ''now'';, al insertar un registro nuevo: insert into poblacion (total, celulares) values (100,23) sólo inserta los datos explícitos, más no hace nada sobre el campo porcentaje de la tabla, que es el que se define en la función. caso 2: dejando la línea, arroja el siguiente erro: Error de SQL: ERROR: syntax error en o cerca de "now" at character 11 CONTEXT: PL/pgSQL function "fporcentaje" line 6 at assignment En la declaración: insert into poblacion (total, celulares) values (100,23) donde la línea 6, obviamente, hace referencia a la línea en cuestión. Ciertamente, en el ejemplo, aparece now sin los parentesis, y el llamado a la función, se hace con los parentesis... vale decir, que he probado ambas, y arroja mismo error.... Sospecho, pero no sé cómo probarlo, que o el disparador no le está llegando a la función, o en la función no está devolviendo el valor asignado... demás está decir, que el campo donde debería guardarse el valor calculado en la función queda como NULL |
Re: función+disparador que calcule un porcentaje a partir de dos campos Bueno, para finalizar, el asunto quedó resuelto, de la siguiente manera: Código: -- FUNCION PARA CALCULAR UN PORCENTAJE (REGLA DE TRES) |
| La zona horaria es GMT -6. Ahora son las 19:59. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.