Mysql 存储过程中的case语句出现问题

Mysql 存储过程中的case语句出现问题,mysql,sql,phpmyadmin,mysql-workbench,Mysql,Sql,Phpmyadmin,Mysql Workbench,我正在写入并更新我的数据库,我想导入它,但我不知道我的代码有什么问题。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

我正在写入并更新我的数据库,我想导入它,但我不知道我的代码有什么问题。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);

我可以在不创建过程的情况下执行此操作吗

根据我们上面的讨论,如果“设置”表中有带有company\u code=“first\u company”的记录,那么您希望插入该记录,那么可以通过这种方式实现

INSERT INTO colourmst (CODE, Column1) 
SELECT LOWER(`value`) , 'XYZ'
FROM `settings` WHERE `setting_name` = 'COMPANY_CODE'
  • END
  • 您需要使用除
    之外的分隔符以创建过程
  • 请参阅以获取解释

    分隔符foo
    创建过程p(代码为VARCHAR(200))
    开始
    案例代码
    当“first_company”然后插入dest_first SELECT code时,从srctable中选择*;
    在dest_other中插入,从srctable中选择'1'、*;
    终例;
    结束;
    福
    定界符;
    设置@company_code=0;
    从设置名称='公司代码'的设置中选择@company\u code:=下限(值);
    呼叫p(@company_code);
    
    您能告诉我们您想要实现的具体目标吗?您期望的结果是什么?在我的代码中,Select将替换为insert语句。只有当数据库中的公司代码为xyz时,我才想在少数数据库中添加新记录。我在这里理解的是,如果“设置”表中有公司代码为“first_company”的记录,那么您想插入该记录,对吗?是,然后我想把新记录添加到另一个表中。如果你想做一次,就不需要过程。这并不是你想要实现的。我想写一个udpading文件,我将把它导入到几个具有不同代码的数据库中。如果公司代码为“xyz”,则将某些内容插入到“xyz1”表中,如果公司代码为“xyzz”,则将其他内容插入到“xyz1”表中。在原始查询中,我希望将select替换为insert to,这样它将无法使用。您需要一个存储过程。不能在简单查询中动态选择表。