我有一个像这样的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];
ENDID列没有特定的排序规则。Language列具有排序规则utf8-unicode-ci。
我犯了错误
MySQL说:
1064 -您的SQL语法有错误;请检查与您的MySQL服务器版本相对应的手册,以便在第11行的“
ID= in_id排序规则utf8 8-general-ci”和[Language = lang COLLATE 8-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];
ENDMySQL说:
1064 -您的SQL语法有一个错误;请检查与您的MySQL服务器版本对应的手册,以便在第13行的“
ID= in_id和Language =lang”附近使用正确的语法。
发布于 2016-05-19 19:40:40
正如在simple_expr下所描述的,表达式语法语法产品可以生成(expr [, expr] ...)。请注意,括号是圆的,而不是方形的。
但是,在这种情况下,不需要括号:
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)
)
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
;https://stackoverflow.com/questions/37332272
复制相似问题