我运行在缺乏理解为什么一个字段值(varchar)包含一个表的文本不能在存储过程中评估。
set @Language=(Select Language from tblcustomer where cid=123);
If @Language='english' then
set @salutation='Ladies and gentlemen,';
else
set @salutation='Sehr geehrte Damen und Herren!';
end if;
结果总是第二个选择。
如果我测试它,select对@Language显示NULL
SELECT @Language, Language from tblcustomer where cid=123;
result= NULL, english
当我
DECLARE xxLanguage varchar(20);
set xxLanguage=(Select Language from tblcustomer where cid=123);
SELECT xxLanguage, Language from tblcustomer where cid=123;
NULL, english
但是做这个
set @Language=(SELECT IFNULL((SELECT 1 from tblcustomer where cid=123 and Language ='english'),0);
给出正确的值1。但我不能再继续正确的如果..最终结果。
If @Language=1 then
set @salutation='Ladies and gentlemen,';
else
set @salutation='Sehr geehrte Damen und Herren!';
end if;
给出了第二个(不正确的)选项('Sehr geehrte Damen und Herren!').
你知道出什么事了吗谢谢
1条答案
按热度按时间6rqinv9w1#
尝试
set @salutation=If (@Language='english', 'Ladies and gentlemen,', 'Sehr geehrte Damen und Herren!');
https://dbfiddle.uk/nY6vjYLP