用于插入多个异常的单个脚本

时间:2017-02-10 23:19:10

标签: sql-server stored-procedures jet-sql

我使用下面的脚本手动插入订单交易。此脚本每次处理一个订单(@orderId - 在此处使用此变量)。我得到了200个订单的清单,有没有办法可以使用单个脚本处理所有订单?

DECLARE       @return_value int, @exceptionId bigint, @createDate datetime

EXEC   @return_value = [dbo].[uspInsertException]
          @exceptionTypeCode = N'CreateCustomerAccount',
          @exceptionSource = N'SOPS',
          @exceptionCode = N'PUSH2EQ',
          @exceptionDescription = N'CreateCustomerAccount exception MANUALLY pushed to EQ',
          @request = N'',
          @response = N'',
          @orderId = 227614128,
          @sourceSystem = N'OMS',
          @exceptionStatusCode = N'Open',
          @actorId = 1,
          @exceptionSubTypeCode = NULL,
          @exceptionId = @exceptionId OUTPUT,
          @createDate = @createDate OUTPUT

SELECT @exceptionId as N'@exceptionId', @createDate as N'@createDate'

SELECT 'Return Value' = @return_value

1 个答案:

答案 0 :(得分:0)

绝对可以做到。我发现的最好的方法是在你的应用程序中构建嵌套类,然后将它传递给sql,你可以使用OPENXML或xPath将其粉碎,具体取决于xml的大小。

根据您的需要,您还可以使用Web服务,您可以在其中放置类和代码以连接到数据库。然后,应用程序引用webservice中的类,并将类层次结构格式的数据传递给Web服务,然后Web服务解析数据并将其作为完整的xml块传递给数据库,在存储过程中将其切碎。并插入。如果使用此方法,请确保使c#类可序列化。

您可以使用for xml轻松地从数据库中检索数据作为存储过程的一部分,我建议将其包装在事务中,以便在发生错误时不会插入一半文件。

如果您需要一些代码示例,请提供有关如何将数据传递到数据库的更好说明。

> User.find_by email: email.to_s