【发布时间】:2011-05-12 19:46:43
【问题描述】:
我正在编写一个使用多个 IF / THEN 语句的存储过程,如果它们的计算结果为 true,则还需要执行多个查询。问题是,我似乎找不到任何合适语法的例子。从MySQL dev handbook 看来,我可以在“statement_list”中有多个查询,但到目前为止我无法让它工作。
这是我想要做的:
SET agency =
COALESCE((SELECT org_agency_o_id
FROM orgs_agencies
WHERE org_agency_code = maj_agency_cat)
,(SELECT min(org_id)
FROM orgs
WHERE org_name LIKE CONCAT('U.S.',SUBSTRING(maj_agency_cat,5))))
IF agency IS NULL THEN
-- execute multiple queries
INSERT INTO orgs (org_name
,org_name_length
,org_type
,org_sub_types)
VALUES (CONCAT('U.S. ',SUBSTRING(maj_agency_cat,5))
,LENGTH(CONCAT('U.S. ',SUBSTRING(maj_agency_cat,5)))
,'org','Org,GovernmentEntity,Federal,Agency');
SET agency = LAST_INSERT_ID();
END IF;
错误:
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 53 行的
'IF agency IS NULL THEN INSERT INTO orgs (org_name,org_name_length,org_type,'附近使用正确的语法
有什么想法吗?我知道它必须是一些简单的东西,所以我非常感谢任何人的意见。
【问题讨论】:
标签: mysql stored-procedures if-statement