on ‎2014 Aug 28 8:58 PM
Hi all, I'm trying to make a convenience function that will expose an integer field as a human readable string, but for some reason I can't seem to get the syntax correct. I have tried many different approaches, but none seem to work. I am sure it is something fairly simple, but for the life of me I just can't seem to make a CASE statement work inside a FUNCTION. From my research, this should work
CREATE TEMPORARY FUNCTION RoleType(typeId INT)
RETURNS CHAR(30)
BEGIN
DECLARE RoleType CHAR(30)
CASE typeId
WHEN 0 THEN SET RoleType = 'Own'
WHEN 1 THEN SET RoleType = 'Child'
WHEN 2 THEN SET RoleType = 'Root'
WHEN 3 THEN SET RoleType = 'Shortcut'
-- etc...
END
return RoleType
END
I know I could store these values in a look-up table, but honestly I'd rather just call the function than have to inner join a table every time I wanted to look up the role type, besides, my inability to make this work has frustrated me enough that I won't be happy until I've figured out what I'm doing wrong.
thanks
Request clarification before answering.
It works this way.
CREATE TEMPORARY FUNCTION RoleType(typeId INT)
RETURNS CHAR(30)
BEGIN
DECLARE @RoleType CHAR(30);
CASE typeId
WHEN 0 THEN
SET @RoleType = 'Own';
WHEN 1 THEN
SET @RoleType = 'Child';
WHEN 2 THEN
SET @RoleType = 'Root';
WHEN 3 THEN
SET @RoleType = 'Shortcut';
END;
return @RoleType;
END
It seams that you can't declare a variable with the same name as the function. I did not realize this before. Thanks for letting me know ;-)
Thomas
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
| User | Count |
|---|---|
| 15 | |
| 9 | |
| 6 | |
| 5 | |
| 4 | |
| 4 | |
| 3 | |
| 2 | |
| 2 | |
| 2 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.