我正在尝试从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=?);
然后输入?作为运行时的值
答案 0 :(得分:2)
您可以使用Value.NativeQuery编写参数化查询。例如,如果您要查询只显示名称为Alice的列,则可以
Value.NativeQuery(Sql.Database("server", "database"), "select Name from Employees where Name = @myName", [ myName = "Alice" ])