sql >> Base de Datos >  >> RDS >> Mysql

Creando funciones en phpMyAdmin - Error:acceso denegado, necesita el superprivilegio para esta operación

El problema era que no tenía el superprivilegio, pero si elimino DEFINER de la consulta, ya no necesito este privilegio.

A partir de MySQL 5.0.3, CREATE PROCEDURE y CREATE FUNCTION requieren el privilegio CREATE ROUTINE. También pueden requerir el privilegio SUPER, según el valor DEFINER, como se describe más adelante en esta sección. Si el registro binario está habilitado, CREAR FUNCIÓN podría requerir el SUPERprivilegio, como se describe en la Sección 18.6, “Registro binario de programas almacenados”.

También tuve que establecer el campo delimitador debajo del cuadro de texto SQL.

Aquí está la consulta SQL sin la declaración DEFINER:

/*!50003 DROP FUNCTION IF EXISTS `f_calc_gst` */;;
/*!50003 SET SESSION SQL_MODE=""*/;;
/*!50003 CREATE*/ /*!50003 FUNCTION `f_calc_gst`(p_ht decimal(15,3), p_province varchar(2)) RETURNS varchar(255) CHARSET utf8
begin
  declare res varchar(255); 
  declare v_gst decimal(15,3);
  declare v_gst_formula varchar(255);

  select GST, GST_formula
  into v_gst, v_gst_formula
  from taxes_periods
  where NOW() between dt_debut and dt_fin
  and id_province = p_province;

  set v_gst_formula = replace(v_gst_formula, 'HT$', p_ht);
  set v_gst_formula = replace(v_gst_formula, 'GST%', v_gst);

  set res = concat('select round(', v_gst_formula, ',2) "gst"');
  return res;
end */;;