Sql server 2008 在WHILE循环中使用动态SQL

Sql server 2008 在WHILE循环中使用动态SQL,sql-server-2008,dynamic,Sql Server 2008,Dynamic,我在一家保险公司工作,正在创建一个自定义应用程序。当我们将保险范围应用于保单时,它存储在一个带有“限额”、“免赔额”和“保费”字段的表中。然而,有许多保险不符合标准。它们对限额、免赔额和保险费使用不同的字段,甚至存储在不同的表中。(不要问为什么,甚至不要试图理解他们仍在这样做的事实,因此我需要留下逻辑来考虑像这样的额外覆盖范围。)对于他们选择的领域,也没有押韵或理由,因此差异很大 因此,我们决定创建“查找”表,以存储覆盖率所需的所有信息。这避免了大量的连接—我们在应用程序的速度和性能方面遇到了问

我在一家保险公司工作,正在创建一个自定义应用程序。当我们将保险范围应用于保单时,它存储在一个带有“限额”、“免赔额”和“保费”字段的表中。然而,有许多保险不符合标准。它们对限额、免赔额和保险费使用不同的字段,甚至存储在不同的表中。(不要问为什么,甚至不要试图理解他们仍在这样做的事实,因此我需要留下逻辑来考虑像这样的额外覆盖范围。)对于他们选择的领域,也没有押韵或理由,因此差异很大

因此,我们决定创建“查找”表,以存储覆盖率所需的所有信息。这避免了大量的连接—我们在应用程序的速度和性能方面遇到了问题

我需要找到一种方法将所有这些字段预填充到一个表中。我想最好的选择性能明智。这将成为一个夜间作业–因此,当我们收到新的数据快照时,我们将运行此查询并预填充/更新表的值

我有下面的代码,我为每个策略循环了一下,基本上是每晚614000次……运行起来需要很长时间

有没有更好的方法让我这么做

SELECT @SQL = N'SELECT @Limit=' + ISNULL(Limit, '''''') + N',@Deductible=' + ISNULL(Deductible, '''''') + N',@Premium=' + ISNULL(Premium, '''''') + N'     FROM PHI_PIJ.dbo.ASBYCPP' + N' WHERE ' + PolicyNum + N' = ''' + @PolicyKey +'''' + N' AND BYAOTX' + N'='''+Coverage +''''
FROM PolicySummary.dbo.Coverage 
WHERE Coverage = @Coverage 
AND LOB = 'BOP'         

EXEC sp_executesql @SQL, N'@Limit nVarChar(255) output,@Deductible nVarChar(255) output,@Premium nVarChar(255) output', @Limit output, @Deductible output, @Premium output              

UPDATE PolicySummary.dbo.CoverageLkup
SET Limit = @Limit, Deductible = @Deductible, Premium = @Premium
WHERE CovAbbrev = @Coverage
AND PolicyKey = @PolicyKey
以下是我的While循环中的内容:

SELECT @SQL = N'SELECT @Limit=' + ISNULL(Limit, '''''') + N',@Deductible=' +     ISNULL(Deductible, '''''') + N',@Premium=' + ISNULL(Premium, '''''') + N' FROM PHI_PIJ.dbo.'     + [File] + N' WHERE ' + PolicyNum + N' = ''' + @PolNum +'''' + N' AND ' + @CovField +     N'='''+Coverage +''''
FROM PolicySummary.dbo.Coverage 
WHERE Coverage = @Coverage 
AND LOB = @LOB           

EXEC sp_executesql @SQL, N'@Limit nVarChar(255) output,@Deductible nVarChar(255)         output,@Premium nVarChar(255) output', @Limit output, @Deductible output, @Premium output

INSERT INTO #OptCov2 VALUES(@Coverage, @Description, @LOB, @Limit, @Deductible,     @Premium)

你能把while循环也包括进去吗?我想它在一个光标上循环,我们也能看到吗?我已经把它包括在上面了。抱歉,周五粘贴代码时出现问题。