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个回答

尝试一下以下代码:

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!

相似问题

1
sql server触发器提示变量fitemid不能为空
6
limit 后面如何用java变量赋值
2
SQL server 2008R2配置服务器下SQL server服务远程过程调用失败
0
请教一个关于NodeJs中在多个pool.query回调中的变量赋值问题?
2
关于sql server 表类型,表变量,临时表的生命周期都是多会?
1
安装SQL Server2017时安装到数据库引擎、SQL客户端连接、SQL客户端连接SDK报错
1
sql server 存储过程问题不知道为什么这个 会出错?
1
tomcat项目运行一段时间后无法连接sql server2008数据库,重启tomat又好了
1
Sql Server中关于CDC(数据更改捕获)的问题:sys.sp_MScdc_capture_job中找不到相应依赖存储过程与函数
0
如何把以下SQLServer版本的存储过程改为MYSQL版本?
3
sql server无法连接服务器,sql server网络配置里面没有任何协议
0
SQL server2005和SQL server2008安装包打开setup.exe就显示停止工作,无法安装,怎么解决
1
安装SQL server 2008 r2时报错:未能加载文件或程序集
0
SQL server 往MySQL插入数据报错
0
如何为SQL存储过程的参数赋值为另一张表查询的结果集,让存储过程按照这个结果集依次执行所有结果集
1
mysql 存储过程定义变量出错
2
电脑共存SQL server2008和SQL server2005有什么问题?
2
怎么使同一变量赋值。
0
php用存储过程 查询sql server的数据库,存储过程有两个结果集,第一个是总数,第二个是数据。
2
sql server 系统过程问题