【问题标题】:Syntax error in mySql to create ProceduresmySql 中创建过程的语法错误
【发布时间】:2020-09-15 11:24:37
【问题描述】:
DELIMITER $$
DROP PROCEDURE IF EXISTS `unitstoamount`;
CREATE DEFINER=`root`@`localhost` PROCEDURE `unitstoamount`( IN units INT(14) , OUT result INT(14))
BEGIN

    DECLARE a INT(14) DEFAULT 0;
    DECLARE b INT(14) DEFAULT 0;
    DECLARE c INT(14) DEFAULT 0;

    SELECT twohundred FROM unitsRate INTO a ;
    SELECT fivehundred FROM unitsRate INTO b ;
    SELECT thousand FROM unitsRate INTO c  ;

    IF units<200
    then
        SELECT a*units INTO result;

    ELSEIF units<500
    then
        SELECT (a*200)+(b*(units-200)) INTO result;
    ELSEIF units > 500
    then
        SELECT (a*200)+(b*(300))+(c*(units-500)) INTO result;
    END IF;

END$$
DELIMITER ;

【问题讨论】:

  • 变量赋值不用SELECT,使用SET result = a * units;
  • 你得到什么错误?
  • 你在手术前做了DELIMITER $$吗?
  • 您可以将前三个选择合二为一:SELECT twohundred, fivehundred, thousand FROM unitsRate INTO a, b, c
  • 为什么是一个过程?,这看起来更像一个函数。

标签: php mysql syntax xampp mariadb


【解决方案1】:

您已将 DELIMITER 设置为 $$。所以,你也应该在DROP PROCEDURE 语句中使用它:

DELIMITER $$
DROP PROCEDURE IF EXISTS `unitstoamount`
$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `unitstoamount`( IN units INT(14) , OUT result INT(14))
...

【讨论】:

    猜你喜欢
    • 2016-06-10
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    • 2016-08-20
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多