create proc AddOrder
@Amount
as
declare @OrderNo char(40)
select @OrderNo=Max(OrderNo) from tbOrderNo
begin
insert tbOrderNo select @OrderNo=@OrderNo+1,@Amount
select '成功'
end
go
我就是要给@OrderNo赋那个表里OrderNo的最大值 好让我插入的时候OrderNo加一 但是跟我说向变量赋值的SELECT语句不能与数据检索操作结合使用 那我要怎么给@OrderNo赋值
尝试一下以下代码:
create proc AddOrder
@Amount
as
declare @OrderNo char(40)
select @OrderNo=Max(OrderNo) from tbOrderNo
begin
insert into tbOrderNo select ISNULL(@OrderNo,0)+1,@Amount
select '成功'
end
go
create proc AddOrder
@Amount
as
declare @OrderNo char(40)
select @OrderNo=Max(OrderNo) + 1 from tbOrderNo
begin
insert tbOrderNo select @OrderNo,@Amount
select '成功'
end
go
报错是因为语句select @OrderNo=@OrderNo+1,@Amount中@OrderNo=@OrderNo+1其实就是个赋值语句,没有返回值的,相当于set @OrderNo=@OrderNo+1
你可以直接执行select @OrderNo=@OrderNo+1结果是没有放回行的
所以讲没有返回行的赋值语句作为值插入是会报错的
你可以select @OrderNo=Max(OrderNo) + 1 from tbOrderNo在查询时就增加1
或者查询完select @OrderNo=Max(OrderNo) from tbOrderNo再set @OrderNo=@OrderNo+1都可以解决