我有一个存储过程(sp_A),它通过表值参数(tvp)接收数据,将所有记录插入表(table_A),然后调用另一个存储过程(sp_B)。 sp_B从tvp中的某些列接收输入参数,并且具有一个类型为nvarchar的输出参数@return。使用单行输入参数执行sp_B工作正常。问题在于使用tvp从sp_A调用sp_B,因为然后sp_B返回多个值,我想要处理,但无法找到合适的数据结构来保存所有返回值。 / p>
我在这里看到了有问题的查询
CREATE PROCEDURE [dbo].[sp_A]
@return varchar(50) output,
@inputData inputTable readonly
AS
BEGIN TRANSACTION
SET NOCOUNT OFF;
declare @typeid int, @insertcount int
set @typeid = (select typeid from @inputData )
--if typeid is not provided, insert into table_A and exit stored proc
if(@typeid IS NULL OR @typeid = 0)
BEGIN
INSERT INTO [dbo].[Table_A]
[cola1], [cola2], [cola3])
select _cola1, _cola2, _cola3
from @inputData
set @insertcount = @@ROWCOUNT
set @return = 'successful'
END
--else if typeid is provided, insert into table_A, and call sp_B, passing input parameters from @inputData
ELSE
BEGIN
declare @colb1 varchar, @colb2 varchar, @colb3 varchar
INSERT INTO [dbo].[Table_A]
([cola1], [cola2], [cola3], [typeid ])
select _cola1, _cola2, _cola3, _typeid
from @inputData
select @colb1 = _colb1, @colb2 = _colb2, @colb3 = _colb3
from @moTable
exec @insertcount = sp_B
@colb1, @colb2, @colb3, @return output
END
COMMIT TRANSACTION
select @insertcount
RETURN
我得到一个"子查询返回超过1个值..."错误,这是可以理解的......但是我需要为应用程序中的进一步处理设置完整的值。返回,处理和传播返回值集到调用程序(在本例中为C#)的最佳方法是什么?