【发布时间】:2016-09-16 20:49:55
【问题描述】:
我有一个这样的 MySql 存储过程
CREATE DEFINER=`uwcrossword`@`%` PROCEDURE `sp_UpdCodePage`(IN in_id int,
IN nm varchar(25), IN nis varchar(25), IN lang varchar(25),
IN stpt varchar(5), IN endpt varchar(5))
BEGIN
UPDATE `uwcrossword`.`CODEPAGE`
SET
`ID` = in_id,
`Name` = nm,
`NameInScript` = nis,
`Language` = lang,
`StartPoint` = stpt,
`EndPoint` = endpt
WHERE [`ID` = in_id COLLATE utf8-general-ci]
AND [Language = lang COLLATE utf8-unicode-ci];
END
ID 列没有特定的排序规则。 Language 列有排序规则 utf8-unicode-ci。
我得到的错误
MySQL 说:
1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 11 行的 '[`ID` = in_id COLLATE utf8-general-ci] AND [Language = lang COLLATE utf8-unicode' 附近使用正确的语法
当我尝试在没有任何排序信息的情况下运行相同的文件时
CREATE DEFINER=`uwcrossword`@`%` PROCEDURE `sp_UpdCodePage`(IN in_id int,
IN nm varchar(25), IN nis varchar(25), IN lang varchar(25),
IN stpt varchar(5), IN endpt varchar(5))
BEGIN
UPDATE `uwcrossword`.`CODEPAGE`
SET
`ID` = in_id,
`Name` = nm,
`NameInScript` = nis,
`Language` = lang,
`StartPoint` = stpt,
`EndPoint` = endpt
WHERE [`ID` = in_id]
AND [Language = lang];
END
MySQL 说:
1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 '[`ID` = in_id ] 附近使用的正确语法 AND [Language = lang]' 在第 13 行
【问题讨论】:
标签: mysql stored-procedures unicode where-clause collation