Я пишу хранимую процедуру, которая использует несколько операторов IF / THEN, которые также должны выполнять несколько запросов, если они оцениваются как истинные. Проблема в том, что я не могу найти никаких примеров подходящего синтаксиса. Из руководства разработчика MySQL кажется, что у меня могло быть несколько запросов в «списке_операторов», но пока я не могу заставить его работать.
Вот что я пытаюсь сделать:
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, чтобы найти правильный синтаксис рядом с
'IF agency IS NULL THEN Проблема в том, что я не могу найти никаких примеров подходящего синтаксиса. Из руководства разработчика MySQL кажется, что у меня могло быть несколько запросов в «списке_операторов», но пока я не могу заставить его работать.
Вот что я пытаюсь сделать:
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, чтобы найти правильный синтаксис рядом с
'IF agency IS NULL THEN Проблема в том, что я не могу найти никаких примеров подходящего синтаксиса. Из руководства разработчика MySQL кажется, что у меня могло быть несколько запросов в «списке_операторов», но пока я не могу заставить его работать.
Вот что я пытаюсь сделать:
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, чтобы найти правильный синтаксис рядом с
'IF agency IS NULL THEN ВСТАВИТЬ INTO orgs (org_name, org_name_length, org_type, '
в строке 53Есть идеи? Я знаю, что это должно быть что-то простое, поэтому буду очень признателен за любой вклад.