我正在通过C#代码将批量数据复制到SQL Server(表名称:TmpTable
),然后要使用以下存储过程更新表:
ALTER PROCEDURE dbo.sp_Update_Locations
(@lupdatedNoRow VARCHAR(10) OUT)
AS
SET NOCOUNT ON
BEGIN
DECLARE @mttblfaximages3_sql NVARCHAR(500) ='UPDATE testAdmin.dbo.mttblFaxImages2 set fRemoteStorageLocation = temp.RemoteStorageLocation, fRemoteImageName = temp.RemoteImageName from testAdmin.dbo.mttblFaxImages2 T INNER JOIN #TmpTable Temp ON (T.fFaxId=Temp.PrimaryId AND T.fFaxPageId=Temp.SecondaryId); DROP TABLE #TmpTable;SELECT @lupdatedNoRow = cast(@@rowcount as VARCHAR)'
EXEC sp_executesql @mttblfaximages3_sql
select @lupdatedNoRow
END
我看到更新工作正常,但之后c#引发异常
必须声明标量变量“ @lupdatedNoRow”
我想返回更新的行数。
我应该如何修改存储过程以返回更新的行数?
答案 0 :(得分:2)
您需要定义变量@lupdatedNoRow
并将其传递到sp_executesql
EXEC sp_executesql @mttblfaximages3_sql,
N'@lupdatedNoRow varchar(10) OUTPUT',
@lupdatedNoRow OUTPUT
select @lupdatedNoRow