我已经编写了一段时间的代码,但是遇到了一些问题。我有两个相同的表-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 . . . select

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 - 过程中的MySQL分号放置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36587970/

10-10 06:35