MySQL存储过程,提示语法错误,谁能帮我瞧瞧,这个不太熟

xiute1982 2015-12-24 12:15:47
CREATE PROCEDURE Pro_GetSerialNumber(IN IN_Code VARCHAR(100),IN IN_TimeFlag VARCHAR(20),OUT OUT_Number INT)
BEGIN
DECLARE CurTKey INT,NextTKey INT,RowCount INT
START TRANSACTION
SELECT SN_Number,COUNT(*) INTO CurTKey,RowCount
FROM SerialNumber WITH (UPDLOCK)--采用更新锁,并保持到事务完成
WHERE SN_Code=IN_Code AND SN_TimeFlag=IN_TimeFlag
IF RowCount=0 THEN
INSERT INTO SerialNumber VALUES(IN_Code,IN_TimeFlag,1)
SET NextTKey=1
ELSE
SET NextTKey=CurTKey+1
UPDATE SerialNumber
SET SN_Number=NextTKey
WHERE SN_Code=IN_Code AND SN_TimeFlag=IN_TimeFlag--此处无需验证TKey是否与SELECT的相同
END IF
COMMIT
SET OUT_Number=NextTKey
END
...全文
60 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiute1982 2015-12-24
  • 打赏
  • 举报
回复

完整的错误提示
xiute1982 2015-12-24
  • 打赏
  • 举报
回复

这个是数据库结构
xiute1982 2015-12-24
  • 打赏
  • 举报
回复
BEGIN DECLARE CurTKey INT; DECLARE NextTKey INT; DECLARE RowCount INT; START TRANSACTION; SELECT SN_Number,COUNT(*) INTO CurTKey,RowCount FROM SerialNumber WHERE SN_Code=IN_Code AND SN_TimeFlag=IN_TimeFlag FOR UPDATE; IF RowCount=0 THEN INSERT INTO SerialNumber VALUES(IN_Code,IN_TimeFlag,1); SET NextTKey=1; ELSE SET NextTKey=CurTKey+1; UPDATE SerialNumber SET SN_Number=NextTKey WHERE SN_Code=IN_Code AND SN_TimeFlag=IN_TimeFlag; END IF; COMMIT; SET OUT_Number=NextTKey; END 修改后可用,必须加;

8,028

社区成员

发帖
与我相关
我的任务
社区描述
高性能数据库开发
社区管理员
  • 高性能数据库开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧