【发布时间】:2015-05-23 08:55:15
【问题描述】:
CREATE PROCEDURE dbo.IssueBook
(
@bookid nvarchar(50),
@ano nvarchar(50),
@mid int,
@librarian varchar(10),
@quantity int
)
AS
declare @cnt int
declare @msg varchar(100)
if not exists( select * from books where bookid = @bookid and quantity = @quantity)
begin
raiserror('Book is not available',16,1);
return;
end;
select @cnt = count(bookid) from issues where mid = @mid;
if ( @cnt >= 2 )
begin
raiserror('Maximum Limit Has Been Reached For Member!',16,1);
return;
end;
begin tran
begin try
update books set quantity =@quantity-1 where bookid= @bookid;
insert into issues values (@bookid, @mid, getdate(), @librarian, @ano);
commit tran
end try
begin catch
rollback tran
/* select @msg = error_message() */
raiserror( 'Unknown Error', 16,1);
end catch
我想更改 sql 表中 quantity 字段的值,我该怎么做,请帮助我,我尝试了很多东西,但它们不起作用,我将非常感谢你...
【问题讨论】:
-
看起来@quantity 根本不应该是一个参数,你可以在检查可用性时从一开始的表中获取它——你应该只更新...数量 = 数量 -1 没有变量。
标签: sql sql-server stored-procedures