我的存储过程有两个while循环,要执行10000条记录需要太多时间。有没有办法降低代码的复杂性。程序的结构如下所示
CREATE PROCEDURE [dbo].[prcAllotApp]
@DocumentElement XML,
@IPA varchar(20),
@UserID varchar(5),
@OutStatus varchar(10) OUT
AS
BEGIN
IF EXISTS (SELECT * FROM #ApplicationDetails)
BEGIN
DECLARE @AppCount int
DECLARE @id int
SET @AppCount = (SELECT COUNT(Application_id) FROM #ApplicationDetails)
SET @id = 1
-- Loop start for selecting Application id (Master loop)
WHILE (@AppCount > 0)
BEGIN
-- All variable declaration
DECLARE @App varchar(20)
DECLARE @Count int
DECLARE @pref int
DECLARE @U_Code varchar(12)
DECLARE @MOI varchar(7)
DECLARE @RemSeat int
DECLARE @AllotedApp int
DECLARE @CCode varchar(5)
-- set values
SET @App = (SELECT Application_id FROM #ApplicationDetails WHERE id = @id)
SET @Count = (SELECT COUNT(DISTINCT U_Code) FROM S_Preference WHERE App = @App)
SET @pref = 1
WHILE (@count > 0)
BEGIN
SET commands
-- Insert, update in some tables
END
END
END
END