首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MariaDB不执行Insert in Procedure

MariaDB不执行Insert in Procedure
EN

Stack Overflow用户
提问于 2018-12-09 04:09:47
回答 1查看 91关注 0票数 1

我正在使用PHPMyAdmin中的MySQL -actually MariaDB -并试图在存储过程中编写一个insert,但由于明显的(安全)原因,这是不被允许的。

我尝试使用GRANT EXECUTE ON PROCEDURE语句更改权限。

代码语言:javascript
复制
GRANT EXECUTE ON PROCEDURE test.putDataInFull TO 'root'@'localhost' 

我真的碰壁了,有什么想法吗?

编辑:

代码语言:javascript
复制
DELIMITER //
CREATE PROCEDURE putDataInFull (IN matchid INT(11))
BEGIN
  DECLARE koula int(11);
  DECLARE c     varchar(255);
  SET @koula = matchid;
  SET @c := concat('insert into log (match_id, comment) values (?,\'inPUtDataWeTrtust\');');

  DECLARE EXIT HANDLER FOR SQLEXCEPTION
       BEGIN
         SELECT CONCAT(@c, ' is not valid');
       END;
  PREPARE stmt FROM @c;
  EXECUTE stmt USING @koula;
  DEALLOCATE PREPARE stmt;
END //
DELIMITER ;

附注:这不是一个生产项目,只是好玩,所以我真的不关心安全性。

EN

回答 1

Stack Overflow用户

发布于 2018-12-09 22:29:40

您可以使用您的变量创建一个insert。没有必要创建一个神奇的字符串。下面是an other stackoverflow question的另一个示例

代码语言:javascript
复制
DELIMITER $$

CREATE  PROCEDURE ADD_WITHDRAWAL_A(IN withdrawalcode_p VARCHAR(25), IN id_p VARCHAR(8), IN amount_p VARCHAR(12), IN datewithdrawn_p VARCHAR(35), IN approved_p VARCHAR(8))
BEGIN

     START TRANSACTION;

     INSERT INTO Withdrawals(WithdrawalCode, IDD, Amount, DateWithdrawn, Approved) 
     VALUES (withdrawalcode_p, id_p, amount_p, datewithdrawn_p, approved_p);

     UPDATE account SET AccountBalance = AccountBalance - amount_p WHERE IDD = id_p LIMIT 1;

     COMMIT;

END $$

DELIMITER ;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53686512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档