【发布时间】:2021-01-27 13:23:31
【问题描述】:
我正在尝试将一个表中的单个单元格值存储在一个变量中(在存储过程中),因此我可以使用它来编辑另一个表中的值,但我不断收到 MSG 201:
Procedure or function 'spBookReturn' expects parameter '@bookID', which was not supplied.
每次我尝试在应该发生的地方运行 sp:
CREATE PROC spBookReturn
@loanID UNIQUEIDENTIFIER,
@bookID UNIQUEIDENTIFIER OUTPUT
AS
BEGIN
BEGIN TRANSACTION tBookReturn
UPDATE BorrowedMaterial SET returned = 1, returnedDate = GETDATE();
SET @bookID = (SELECT TOP 1 bookID FROM BorrowedMaterial WHERE loanID = @loanID ORBER BY returnedDate);
UPDATE Books SET nHome = nHome + 1 WHERE ID = @bookID;
COMMIT TRANSACTION tBookReturn;
END;
EXEC spBookReturn '546A444A-3D8D-412E-876D-2053D575B54F'
有谁知道为什么我定义@bookID 变量的方式不起作用以及如何使它起作用?
谢谢。
编辑:
我有两个表:BorrowedMaterial,其中包括属性loanID, bookID, returned, returnedDate 和其他一些不相关的。
另一个表是Books,它包括bookID, nHome,但不包括loanID。
所以通过只提供loanID 作为输入,我想更新nHome。我试图抓住bookID,因为这是这两个属性唯一的共同点,这就是问题发生的地方。
旁注:我删除了它错误产生的变量@custID。
【问题讨论】:
标签: sql tsql variables stored-procedures