sql >> Databáze >  >> RDS >> Mysql

Vytváření funkcí v phpMyAdmin - Chyba:přístup odepřen, pro tuto operaci potřebujete super oprávnění

Problém byl v tom, že jsem neměl super oprávnění, ale pokud odeberu DEFINER z dotazu, toto oprávnění již nepotřebuji.

Od MySQL 5.0.3 vyžadují CREATE PROCEDURE a CREATE FUNCTION oprávnění CREATE ROUTINE. Mohou také vyžadovat oprávnění SUPER, v závislosti na hodnotě DEFINER, jak je popsáno dále v této části. Pokud je povoleno binární protokolování, CREATE FUNCTION může vyžadovat SUPERprivilegium, jak je popsáno v části 18.6 – „Binární protokolování uložených programů“.

Také bylo nutné nastavit oddělovací pole pod textovým polem SQL.

Zde je dotaz SQL bez příkazu 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 */;;



  1. Jak používat EXISTS Logical Operator v SQL Server - SQL Server / TSQL výukový program, část 125

  2. identitu z SQL vložit přes jdbctemplate

  3. Jak odeslat libovolné parametry do triggeru Oracle?

  4. Jak používat součet, průměr a počet v příkazu Select - SQL Server / TSQL výukový program, část 128