mysql 存儲(chǔ)過程參數(shù)傳入字符串報(bào)錯(cuò)
在創(chuàng)建了一個(gè)如下所示的 mysql 存儲(chǔ)過程后,你會(huì)遇到一個(gè)錯(cuò)誤:
create procedure mypo02(in dataname varchar(10)) begin if dataname is null or dataname = "" then select * from ssd; else select * from ssd where ename like concat('%',dataname,'%'); end if; end;
登錄后復(fù)制
錯(cuò)誤信息為:
procedure execution failed 1054 - unknown column '王小李' in 'field list'
登錄后復(fù)制
問題在于:調(diào)用存儲(chǔ)過程時(shí)傳入的 dataname 參數(shù)類型不匹配。
當(dāng) dataname 參數(shù)為整型時(shí),存儲(chǔ)過程可以正常運(yùn)行。但當(dāng) dataname 參數(shù)為字符串時(shí),由于 where 子句中的字段類型為整型,就會(huì)導(dǎo)致錯(cuò)誤。
要解決此問題,你需要確保調(diào)用存儲(chǔ)過程時(shí)傳入的參數(shù)類型與存儲(chǔ)過程定義中指定的類型相匹配。具體來說,你需要將 dataname 改為字符串類型,如下所示:
call mypo02('王小李')
登錄后復(fù)制
如果問題仍然存在,請(qǐng)?zhí)峁└敿?xì)的錯(cuò)誤信息或代碼片段,以便進(jìn)一步分析解決。