我已经编写一些代码一段时间了,但遇到了一些问题。我有两个相同的表 - History 和 Checked_Out_Media - 我正在尝试获取 Checked_Out_Media 中的指定记录并将其移至 History 表。主键不会自动递增,因此我必须为最大历史表 ID 创建一个变量并将其递增 1。
我认为我的代码大部分是正确的,可能需要一些分号位置?可以看一下吗?
Create Procedure spMoveToHistory( IN UserID char(6), IN MediaBarcode varchar(50) )
BEGIN
SELECT @NextRow := (MAX(History_TUID) + 1)
From History
Insert into History
Values (@NextRow, COM.User_ID, COM.Media_Barcode, COM.Checked_Out_Date, COM.Return_Date)
From Checked_Out_Media as COM
Where COM.User_ID = UserID
AND (COM.Media_Barcode = MediaBarcode)
END
此外,我使用 PHPMyAdmin,它允许我将分隔符设置为代码外部的 //
。
最佳答案
您应该命名参数,以便将它们与列名称区分开。此外,您还需要 insert 。 。 。选择
:
Create Procedure spMoveToHistory (
IN in_UserID char(6),
IN in_MediaBarcode varchar(50)
)
BEGIN
SELECT @NextRow := (MAX(History_TUID) + 1)
From History;
Insert into History
Select @NextRow, COM.User_ID, COM.Media_Barcode, COM.Checked_Out_Date, COM.Return_Date
From Checked_Out_Media COM
Where COM.User_ID = in_UserID AND COM.Media_Barcode = in_MediaBarcode;
END;
关于MySQL 分号在过程中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36587970/