我一直对MySQL Workbench 6.2使用带有INT变量的LEFT
字符串函数报告存储例程中的语法错误感到困惑:
declare lclPos int;
declare lclPart varchar(100);
...
set lclPart = LEFT(lclTemp, lclPos - 1);
错误读取
语法错误:'lclPos'(标识符)此时无效输入。
但是,如果我将代码更改为等效的
set lclPart = SUBSTRING(lclTemp, 1, lclPos - 1);
没有报告错误。使用LEFT
时,常量整数(但没有局部变量)有效。
使用LEFT
函数的这些例程很久以前就被编码了,我没有遇到过这段代码的任何问题。奇怪的是,尽管报告了语法错误,但现有例程仍继续在服务器上运行。这让我觉得这可能是由于MySQL Workbench 6.2中的一个错误。服务器运行MySQL 5.5。
有没有人知道这里发生了什么?
答案 0 :(得分:1)
set lclPart = (select LEFT(lclTemp, lclPos - 1));
你没有错误