我一直在关注教程这里但每当我尝试刷新工作簿时,它都会出现以下错误:
DataSource.Error:Microsoft SQL:此数据库函数不支持值为“null”的查询选项“Query”。
这是查询背后的 SQL,没有任何内容返回 null,并且存储过程设置为接受 3 个输入参数。
CSR=Excel.CurrentWorkbook(){[Name="param"]}[Content]{0}[#"CSR"],
d1=Excel.CurrentWorkbook(){[Name="param"]}[Content]{0}[#"d1"],
d2=Excel.CurrentWorkbook(){[Name="param"]}[Content]{0}[#"d2"],
Source = Sql.Database("ServerInstanceName", "Credentials",
[Query="exec [dbo].[StoredProcToRun] '" & Number.ToText(d1)
& "''," & Number.ToText(d2) & "','" & CSR & "'"])
这是我的存储过程的设置,显示它接受 3 个参数:
Alter PROCEDURE dbo.StoredProcToRun
@d1 varchar(50), @d2 varchar(50), @CSR varchar(500)
AS
BEGIN
为了让此电源查询将 Excel 参数传递给我的 SQL 存储过程并将数据返回到 Excel 工作簿,我需要修改什么?
我将 Power Query SQL 更改为以下内容,现在出现错误
应为标记逗号
[Query="exec [dbo].[StoredProcToRun]
& Number.ToText(d1) & "','"
& Number.ToText(d2) & "','"
& CSR & "'"])
答案1
连接子字符串时,请确保有一个字符串。数值(例如 CSR)必须转换为字符串才能进行连接。
CSR=Excel.CurrentWorkbook(){[Name="param"]}[Content]{0}[#"CSR"],
d1=Excel.CurrentWorkbook(){[Name="param"]}[Content]{0}[#"d1"],
d2=Excel.CurrentWorkbook(){[Name="param"]}[Content]{0}[#"d2"],
Source = Sql.Database("ServerInstanceName", "Credentials",
[Query="exec [dbo].[StoredProcToRun] '" &
Number.ToText(d1) & "','" &
Number.ToText(d2) & "','" &
Number.ToText(CSR) & "'"])
也可以看看这里您找到的教程中的另一个示例。
刚刚尝试使用脚本的一部分来生成 EXEC 语句的字符串。最后尝试生成字符串并将其复制到 Management Studio 上以检查它是否在那里有效。