tankgoing
2018-07-06 06:30
采纳率: 61.3%
浏览 1.2k

sql server 2008存储过程向变量赋值

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赋值

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • jiangyan81810 2018-07-06 06:40
    已采纳

    尝试一下以下代码:

    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

    打赏 评论
  • a279076265 2018-08-09 02:53

    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都可以解决

    打赏 评论

相关推荐 更多相似问题