sql-server - 如何在 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 多个值。
所以我的问题是:
- 如何使用我的 Excel 文件来获取其中的值?
- 如何
EXEC
对超过 600 个值使用单行指令(类似于循环 while)。
我正在使用 Microsoft SQL Server Management Studio
解决方案
推荐阅读
- c# - 将对象序列化为具有多个命名空间的字符串 XML
- javascript - 我的代码在输出下不断返回未定义
- r - 在 R 中具有矩阵运算的 Margritt 管道
- angular - 如何检测 Angular 何时将元素附加到 DOM?
- excel - 在 VBA 公式中不返回任何内容
- python-3.x - 如何从 LinearSVC 模型中检索训练历史?
- android - 当 View 只是一个 Simple View 使用“new TextView”时,如何改为“View inflate(int resource,ViewGroup root, boolean attachToRoot)”方法?
- oracle - PLSQL 在 For 循环中插入
- scikit-learn - 如果有多个具有相同分数的估计器,GridsearchCV 会选择什么?
- python - 从python数据框生成多对多字典关系列表