存储过程调用存储过程返回字符串问题
我有两个存储过程A和B,
A是客户端新增数据到数据库的存储过程
B是生成流水号的存储过程
在A里有一个编号字段是NVARCHAR的,这个值需要从B存储过程返回,然后写入数据库
请位各位前辈要怎么调用?
------最佳解决方案--------------------create proc pr_getstr(@str varchar(20)output)
as
begin
set @str='0001';
end
declare @strs varchar(20)
exec pr_getstr @strs output
print @strs
------其他解决方案--------------------考虑到高并发,我不建议将生成流水号放到另一个存储过程中,还是在同一个存储过程中用一个事务控制。
如果一定要两个存储过程,那么在A里面执行:
set xact_abort on
begin transaction
declare @bianhao nvarchar(20)=''
exec B @bianhao output
insert into ...
commit transaction
存储过程B:
create proc B
@bianhao nvarchar(20) output
as
begin
select @bianhao=max(bianhao+1) from tablebianhao with(tablock)
end
------其他解决方案--------------------create proc P_A
as
begin
declare @A table(F nvarchar(20)) --b结果临时保存
insert into @A
exec P_B
insert into ....
end
------其他解决方案--------------------在A中调用B,将B的结果先保存到一个变量中,然后再插入
------其他解决方案--------------------用OUTPUT解决了,高并发问题已解决