Get certified for free when you join Fabric Data Days 2026 and dive into Fabric, Power BI, SQL, AI, and other essential data skills.
Join nowJuly 7 - July 17 | Round 2 of the Power BI Dataviz World Championships. Don't miss your chance! Learn more
I received the DECLARE error message stating I can't use declare in a Direct Query. I found out in this forum that a user defined function (UDF) is necessary to make this work: https://community.powerbi.com/t5/Desktop/Why-is-DECLARE-not-supported-Error/td-p/40983
I then found out from the error message that I can't have dynamic SQL in a UDF.
"Invalid use of a side-effecting operator 'EXECUTE STRING' within a function."
Are there any other options for getting my query to work in a direct query in Power BI? My query is below:
DECLARE @SQL as VARCHAR(MAX) DECLARE @Columns AS VARCHAR(MAX) SELECT @Columns = COALESCE(@Columns + ', ','')+QUOTENAME([MonthYear]) FROM( SELECT distinct cast([MonthName] as varchar) + ' ''' + right(cast([Year] as varchar),2) AS MonthYear, [Year],[Month] FROM gpo.dbo.DateDimension A WHERE [Date] between getdate()-365 AND dateadd(month,-1,getdate())) A order by [Year],[Month] SET @SQL = ' WITH PivotData AS ( SELECT distinct A.[Client Designated Loc Nm] as Client, sum(A.TotalInvoice) as [Total Admin Fee], cast([MonthName] as varchar) + '' '''''' + right(cast([Year] as varchar),2) AS MonthYear FROM GPO.DBO.SALES A INNER JOIN GPO.DBO.datedimension B ON A.InvoiceDate=B.[Date] INNER JOIN RXSS.DBO.SupplierContractNbrs C ON A.SupplierID=C.SupplierID WHERE A.[Status] = ''A'' and C.ActiveReporting = 1 AND B.[Date] >= getdate()-365 GROUP BY A.SupplierID, A.[Client Designated Loc Nm], A.InvoiceDate, B.[MonthName], B.[Year], B.[MonthYear] ) SELECT * FROM (SELECT Client, ' + @Columns + ' FROM PivotData PIVOT ( sum([Total Admin Fee]) FOR [MonthYear] IN ( ' + @Columns + ' ) ) AS pvt ) D ' EXEC (@SQL)
Hi,
Have someone has a workarround for this issue. I am also struggling with this. Thank you in advance
@Anonymous wrote:
I received the DECLARE error message stating I can't use declare in a Direct Query. I found out in this forum that a user defined function (UDF) is necessary to make this work: https://community.powerbi.com/t5/Desktop/Why-is-DECLARE-not-supported-Error/td-p/40983
I then found out from the error message that I can't have dynamic SQL in a UDF.
"Invalid use of a side-effecting operator 'EXECUTE STRING' within a function."
Are there any other options for getting my query to work in a direct query in Power BI? My query is below:
May I know why dynamical PIVOT in your case? What is the final goal?
Hi @Anonymous
What about calling the sp_executeSQL proc and passing your dynamic query via that?
Worked for me using Direct Query
Join us in Barcelona for FabCon and SQLCon, the Fabric, Power BI, SQL, and AI community event. Save €200 with code FABCMTY200.
Join Data Days 2026: 60 days of free live/on-demand sessions, challenges, study groups, and certification opportunities.
| User | Count |
|---|---|
| 29 | |
| 26 | |
| 25 | |
| 25 | |
| 18 |
| User | Count |
|---|---|
| 54 | |
| 49 | |
| 43 | |
| 36 | |
| 32 |