C# 需要使用SQLServer数据库执行多个事务
在这种情况下,我需要从表中检索记录,并使用这些值作为存储过程的参数传递。存储过程将重新运行一行,我需要再次使用存储过程返回的值并更新其他表。请给我一个示例C#代码来实现这个场景。任何帮助都将被占用 提前感谢, Pradeep您可以尝试以下方法:C# 需要使用SQLServer数据库执行多个事务,c#,C#,在这种情况下,我需要从表中检索记录,并使用这些值作为存储过程的参数传递。存储过程将重新运行一行,我需要再次使用存储过程返回的值并更新其他表。请给我一个示例C#代码来实现这个场景。任何帮助都将被占用 提前感谢, Pradeep您可以尝试以下方法: createPROCEDURE MultipleTransaction AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
createPROCEDURE MultipleTransaction
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
declare @a int;
set @a=1;
-- Insert statements for procedure here
while((select distinct id from a where id =@a) is not null )
begin
declare @name varchar(100)
declare @id int
set @name =(select distinct name2 from a where id =@a)
set @id =(select distinct id from a where id =@a)
exec GetRows @name,@id -- calling another procedure
set @a =@a+1;
end
END
create PROCEDURE GetRows
(@Para varchar(100),@id varchar(10) )
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
UPDATE [Cube].[dbo].[b]
SET [name1] = @Para
WHERE id =@id
END
好的,这只是另一个“Giv'me ze codez”-问题…我知道这可以通过创建新的存储过程来实现,但不幸的是,我没有特权创建任何存储过程,我只需要通过c#代码来实现。在c#代码中这样做真的很糟糕,因为您正在生成不必要的网络往返。也许你会和一个有权做正确事情的人交谈……谢谢你的回答,但这在我的场景中是不可能的,因为我正在开发一个使用产品数据的插件。我无法创建表或过程。而不是proc。->您可以动态生成sql语句,并在sql server上执行该语句。对于普通的SqlCommand对象,这应该是可能的。。。顺便说一下,SQL代码可以与过程体的代码相同。