2016-03-05 101 views
1

我正在使用電源查詢&我想從一個Excel單元格分配一個逗號分隔的字符串到一個sql服務器變量。目前爲止,我的權力查詢如下。我的參數是在創先爭優「表3」中的「列2」:電源查詢分配一個字符串從excel到sql服務器變量

let 

    ProdParameterSource =Excel.CurrentWorkbook(){[Name="Table3"]}[Content]{0}[Column2], 


    Source = Sql.Database("server", "database", [Query="Declare @Product varchar(max) = "&(ProdParameterSource)&" select @Product"]) 
in 
    Source 

我看到下面的錯誤:

enter image description here

我使用在Excel工作表中看到的參數如下:

enter image description here

我怎樣才能解決這個錯誤,看到我的輸入參數在SQL Server變量ABC爲'44,216' (與倒逗號)。

回答

2

我不做很多強大的查詢功能,但我在Power BI Desktop版本中工作。

首先,您需要查看MSDN上對SQL.Database()的引用。

它正在查找整個查詢,或者是您構成的動態字符串或對存儲過程的調用。

我下面的一個簡單示例,從Adventure Works DW 2012 Customer表中提取數據。

enter image description here

你缺少什麼是TSQL語句或多個TSQL語句。使用分號將語句合併到一個批處理中。

下面的示例創建一個變量@x作爲整數並返回值。這幾乎就像你上面的例子。

enter image description here

系統將提示您安全(可信證書),它會告訴你,這是一個未加密的連接。

我做了一些環視NET。這篇來自裏夫斯史密斯的文章就像我最後一個例子,但傾向於權力查詢和excel。請記住,兩款產品都使用相同的引擎。

https://reevessmith.wordpress.com/2014/08/19/power-query-and-stored-procedures-with-parameters/

再次

0

這將解決這個問題:[Query="Declare @Product varchar(max) = '" & ProdParameterSource & "' select @Product"])

這將以更安全的方式修復它,因爲您將轉義任何可能突破字符串值的額外單引號:[Query="Declare @Product varchar(max) = '" & Text.Replace(ProdParameterSource, "'", "''") &"' select @Product"])

發生了什麼是Power Query將傳遞給Query的文本視爲整個腳本,並且在構建腳本時未將ProdParameterSource的值放在引號中,因此該腳本似乎將varchar值設置爲44,216 (不含引號)。這是一個無效的陳述。

相關問題