存储过程中的case语句问题

问题描述 投票:1回答:2

我正在写和更新我的数据库,我想导入但我不知道我的代码有什么问题。 MySQL Workbench和phpMyAdmin返回一个语法错误。这只是一个案例陈述的例子。谁能帮我?

SET @company_code = 0;
SELECT @company_code := LOWER(`value`) FROM `settings` WHERE `setting_name` = 'COMPANY_CODE';
CREATE PROCEDURE p(in  code varchar(200))
BEGIN 
CASE code  
    WHEN 'first_company' THEN SELECT code;
    ELSE SELECT '1';
END CASE
END;

CALL p(@company_code);

我可以不创建程序吗?

mysql sql phpmyadmin mysql-workbench
2个回答
1
投票
  1. END之后你缺少一个分号
  2. 您需要使用;以外的分隔符来创建过程

请参阅Defining Stored Programs以获得解释。

DELIMITER foo

CREATE PROCEDURE p(IN code VARCHAR(200))
BEGIN
  CASE code
    WHEN 'first_company' THEN INSERT INTO dest_first SELECT code, * FROM srctable;
    ELSE                      INSERT INTO dest_other SELECT '1',  * FROM srctable;
  END CASE;
END;
foo

DELIMITER ;

SET @company_code = 0;
SELECT @company_code := LOWER(value) FROM settings WHERE setting_name = 'COMPANY_CODE';
CALL p(@company_code);

0
投票

根据我们上面的讨论,如果“settings”表具有company_code =“first_company”的记录,那么你想插入记录然后可以通过这种方式实现

INSERT INTO colourmst (CODE, Column1) 
SELECT LOWER(`value`) , 'XYZ'
FROM `settings` WHERE `setting_name` = 'COMPANY_CODE'
© www.soinside.com 2019 - 2024. All rights reserved.