【问题标题】:PHPmyadmin Stored Procedures Syntax Error if elsePHPmyadmin 存储过程语法错误 if else
【发布时间】:2021-05-22 04:49:27
【问题描述】:

第 11 行 'BEGIN INSERT INTO customer(CUSTOMER_ID,NAME)' 处的存储过程语法错误....................... ..................................................... ..................................................... ..................................................... …………

BEGIN
    IF EXISTS
        (
        SELECT
            *
        FROM
            country
        WHERE
            country_code = @country_code
    )
BEGIN
    INSERT INTO customer(
        CUSTOMER_ID,
        NAME,
        EMAIL,
        COUNTRY_CODE,
        BUDGET,
        USED
    )
VALUES(
    @CUSTOMER_ID,
    @NAME,
    @EMAIL,
    @COUNTRY_CODE,
    @BUDGET,
    @USED
)
END ELSE
BEGIN
    INSERT INTO customer(
        CUSTOMER_ID,
        NAME,
        EMAIL,
        COUNTRY_CODE,
        BUDGET,
        USED
    )
VALUES(
    @CUSTOMER_ID,
    @NAME,
    @EMAIL,
    @COUNTRY_CODE,
    @BUDGET,
    @USED
)
END
END

【问题讨论】:

  • 为什么你的图片中的代码,你没有复制到你显示的代码中? (我说的是从CREATE PROCEDURE.....开始的那篇文章)
  • 错误提示“检查手册”,manual 表明每个 SQL 语句都应以分号结尾(;)
  • 这不是 if 的正确语法 - 请参阅 - dev.mysql.com/doc/refman/8.0/en/if.html ALSO 你似乎对参数和列使用相同的名称 - 这是一个不号..

标签: mysql stored-procedures phpmyadmin


【解决方案1】:

DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `AddCustomer`(IN `CUSTOMER_ID` VARCHAR(4), IN `NAME` VARCHAR(50), IN `EMAIL` VARCHAR(50), IN `COUNTRY_CODE` VARCHAR(2), IN `COUNTRY_NAME` VARCHAR(50), IN `BUDGET` DECIMAL(18,2))
BEGIN
    IF  EXISTS
        (
        SELECT
            *
        FROM
            country
        WHERE
            country_code = country_code
    ) THEN
INSERT INTO customer(
    CUSTOMER_ID,
    NAME,
    EMAIL,
    COUNTRY_CODE,
    BUDGET,
    USED
)
VALUES(
    CUSTOMER_ID,
    NAME,
    EMAIL,
    COUNTRY_CODE,
    BUDGET,
    USED
) ; ELSE
INSERT INTO country(COUNTRY_CODE, COUNTRY_NAME)
VALUES(COUNTRY_CODE, COUNTRY_NAME) ;
INSERT INTO customer(
    CUSTOMER_ID,
    NAME,
    EMAIL,
    COUNTRY_CODE,
    BUDGET,
    USED
)
VALUES(
    CUSTOMER_ID,
    NAME,
    EMAIL,
    COUNTRY_CODE,
    BUDGET,
    USED
) ; 
END IF ;
END$$
DELIMITER ;

【讨论】:

    猜你喜欢
    • 2018-05-23
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 2013-04-07
    • 1970-01-01
    • 2013-11-18
    • 2020-07-05
    • 2016-11-09
    相关资源
    最近更新 更多