mySql 中创建过程的语法错误
Posted
技术标签:
【中文标题】mySql 中创建过程的语法错误【英文标题】:Syntax error in mySql to create Procedures 【发布时间】: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
为什么是一个过程?,这看起来更像一个函数。
【参考方案1】:
您已将 DELIMITER 设置为 $$
。所以,你也应该在DROP PROCEDURE
语句中使用它:
DELIMITER $$
DROP PROCEDURE IF EXISTS `unitstoamount`
$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `unitstoamount`( IN units INT(14) , OUT result INT(14))
...
【讨论】:
以上是关于mySql 中创建过程的语法错误的主要内容,如果未能解决你的问题,请参考以下文章