2014-10-02 35 views
0

我一直困惑的事實使用int變量,MySQL工作臺6.2報告中使用與INT變量LEFT字符串函數存儲程序語法錯誤:不能在MySQL的左功能

declare lclPos int; 
declare lclPart varchar(100); 
... 
set lclPart = LEFT(lclTemp, lclPos - 1); 

錯誤讀取

Syntax error: 'lclPos' (identifier) is not valid input as this point.

但是,如果我的代碼更改爲等效

set lclPart = SUBSTRING(lclTemp, 1, lclPos - 1); 

沒有錯誤報告。當使用LEFT時,常量整數(但不包含局部變量)有效。

這些使用LEFT函數的例程很久以前就被編碼了,而且我還沒有遇到過這個代碼的任何問題。奇怪的是,儘管事實上報告了語法錯誤,但現有的例程仍在服務器上工作。這讓我認爲這可能是由於MySQL Workbench 6.2中的一個錯誤造成的。服務器運行MySQL 5.5。

有沒有人知道這裏發生了什麼?

回答

1
set lclPart = (select LEFT(lclTemp, lclPos - 1)); 

你不會有任何錯誤

+0

好一點。你需要在'select'語句中放置括號。但是,儘管發生了這種變化,問題仍然存在:語法錯誤是相同的。 'SUBSTRING'雖然工作:'set lclPart =(select substring(lclTemp,1,lclPos - 1));' – Gruber 2014-10-02 11:37:42

+0

編輯........... thnx – nesreen 2014-10-02 12:11:53