首页 > 解决方案 > 如何在 Excel 文件中获取值并多次重复执行存储过程?

问题描述

我正在使用 SQL Server,并且我有以下 T-SQL 脚本:

USE [MyDatabase]
GO

DECLARE @var1 NCHAR(2)
DECLARE @var2 DATE
DECLARE @var3 NVARCHAR(100)
DECLARE @var4 BIT

SET @var1 = val1
SET @var2 = val2
SET @var3 = val3
SET @var4 = val4

BEGIN TRANSACTION

SELECT a.*
FROM [MyDataBase].[dbo].[MyTable1] a (NOLOCK)
INNER JOIN [MyDataBase].[dbo].[MyTable2] b (NOLOCK) ON b.id2 = a.id1
WHERE b.Col1 = @var1
ORDER BY a.id1

EXEC [MyDataBase].[obj].[MyStoredProc] 
        @param1=@var1, @param2=@var3, @param3=somevalue, @param4= @var2

SELECT a.*
FROM [MyDataBase].[dbo].[MyTable1] a (NOLOCK)
INNER JOIN [MyDataBase].[dbo].[MyTable2] b (NOLOCK) ON b.id2 = a.id1
WHERE b.Col1 = @var1
ORDER BY a.id1

ROLLBACK TRANSACTION
--COMMIT TRANSACTION

然后我有一个包含一列和 600 多行的 Excel 文件(每行是一个 INT)。

上述脚本的目标是[MyStoredProc]通过改变参数在事务中重复相同的存储过程@param3。该参数@param3从 Excel 文件中检索值。当我在@param3 中输入的值非常有限时,此过程很好。为此,我可以尽可能重复相同的 EXEC 指令,因为我有这样的值:

EXEC [MyDataBase].[obj].[MyStoredProc] 
        @param1=@var1, @param2=@var3, @param3=somevalue1, @param4= @var2
EXEC [MyDataBase].[obj].[MyStoredProc] 
        @param1=@var1, @param2=@var3, @param3=somevalue2, @param4= @var2
EXEC [MyDataBase].[obj].[MyStoredProc] 
        @param1=@var1, @param2=@var3, @param3=somevalue3, @param4= @var2
...

不幸的是,在我的 Excel 文件中,我有 600 多个值。

所以我的问题是:

  1. 如何使用我的 Excel 文件来获取其中的值?
  2. 如何EXEC对超过 600 个值使用单行指令(类似于循环 while)。

我正在使用 Microsoft SQL Server Management Studio

标签: sql-serverexceltsqlstored-procedures

解决方案


推荐阅读