I am trying to write a function that takes two parameters and returns a calculated result based on a case statement (please see below). I keep getting a syntax error:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CASE when (medToConvert) = "Codeine" then MME = doseToConver' at line 13
This is what I've tried so far:
/* Function that takes two parameters as input:
Dosage of an opioid
Name of the opioid
Returns the morphine equivalent dosage */
CREATE FUNCTION convertToMorphineEquiv (doseToConvert INT, medToConvert VARCHAR(20))
RETURNS INT
BEGIN
DECLARE MME INT
CASE
when (medToConvert) = "Codeine" then MME = doseToConvert * 0.15
-- Fentanyl Transdermal (in mcg/hr)
when (medToConvert) = "Fentanyl" then MME = doseToConvert * 2.4
when (medToConvert) = "Hydrocodone" then MME = doseToConvert * 1
when (medToConvert) = "Hydromorphone" then MME = doseToConvert * 4
when (medToConvert) = "Methadone" AND doseToConvert BETWEEN 1 AND 20 then MME = doseToConvert * 4
when (medToConvert) = "Methadone" AND doseToConvert BETWEEN 21 AND 40 then MME = doseToConvert * 8
when (medToConvert) = "Methadone" AND doseToConvert BETWEEN 41 AND 60 then MME = doseToConvert * 10
when (medToConvert) = "Methadone" AND doseToConvert >=60 then MME = doseToConvert * 12
when (medToConvert) = "Morphine" then MME = doseToConvert * 1
when (medToConvert) = "Oxycodone" then MME = doseToConvert * 1.5
when (medToConvert) = "Oxymorphone" then MME = doseToConvert * 3
when (medToConvert) = "Tapentadol" then MME = doseToConvert * 0.4
else "Conversion for this opioid is not available"
END
RETURN MME
END
CASE when (medToConvert) = "Codeine" then ... when (medToConvert) = "Methadone" AND doseToConvert BETWEEN 1 AND 20 then..
– dnoeth