This is the error message:
ERROR: error de sintaxis en o cerca de «;» LINE 35: END;
I am trying to create a dynamic execution query to update the drug price for an individual product, for a supplier, or for a laboratory. This is my function in Postgres:
CREATE OR REPLACE FUNCTION mod_medicamento(char,text,char,float)RETURNS void as $$
Declare
/*
$1 for table (L=laboratorio,P=Proovedor(supplier),M=medicamento
$2 for name of lab,supplier or product
$3 paramater for tyoe of operation (A for increment price D for decrement price)
$4 for porcentage(0.01 to 0.99)
*/
tabla ALIAS FOR $1;
nombre ALIAS FOR $2;
operacion ALIAS FOR $3;
porcentaje ALIAS FOR $4;
nombre_tabla varchar(30);
nombre_campo varchar(30);
calculo varchar(20);
BEGIN
if tabla='L'then
nombre_tabla:='laboratorio';
nombre_campo:='laboratorio';
else if tabla='P'then
nombre_tabla:='proovedor';
nombre_campo:='proovedor';
else if tabla='M' then
nombre_tabla:='medicamento';
nombre_campo:='nombre';
else
RAISE EXCEPTION 'selecciona una opcion valida (L/P/M)';
END IF;
if operacion='A' then
calculo:='precio+precio*';
else if operacion='D' then
calculo:='precio-precio*';
else
RAISE EXCEPTION 'selecciona una opcion valida de operacion(A/D)';
end if;
Execute format('Update medicamento set precio=%L%L where id_%L = (Select id_%L from %I
where %I like %L)',calculo,porcentaje,nombre_tabla,nombre_tabla,nombre_tabla,nombre_campo,
nombre);
END;
$$ LANGUAGE plpgsql;