参数化SQL存储过程Excel Get&Transform

时间:2018-10-11 13:56:47

标签: sql-server excel powerquery

我正在尝试从SQL Server到Excel调用存储的选择过程。

在SSMS中可以写为

@val1=1;
@val2=2;
Execute SP_DoStuff(@param1=@val1,@param2=@val2);

看看类似的问题,一个常见的答案是连接参数并作为动态SQL运行。例如: Use values in cells as parameters in stored procedure in power query editor

有答案

Source = Sql.Database("xxxxxxxxxxxxxxxxx", "xxxxxxxxxxx", [Query=
"#(lf)#(lf)EXEC#(tab) [dbo].[TestParameter]#(lf)
#(tab)#(tab)@from = '" & YourDateMethod & "'#(lf)
#(tab)#(tab)@isValid = 1,#(lf)
#(tab)#(tab)@someInt = 90"
]) 
in Source 

除非我在此处缺少任何内容,否则由于YourDateMethod的字符串连接,此已建立的方法似乎很容易被注入。

有没有一种方法可以将Excel中的值安全地输入到参数中?

例如odbc允许使用令牌进行准备

Execute SP_DoStuff(@param1=?,@param2=?);

然后输入?作为运行时的值

1 个答案:

答案 0 :(得分:2)

您可以使用Value.NativeQuery编写参数化查询。例如,如果您要查询只显示名称为Alice的列,则可以

Value.NativeQuery(Sql.Database("server", "database"), "select Name from Employees where Name = @myName", [ myName = "Alice" ])