2015-05-27 2 views
0

Есть ли способ написать такой запрос, где мы можем объявить переменную динамически?Динамическое объявление переменной в запросе SQL Server Analysis Services MDX?

В настоящее время я использую запрос, как показано ниже:

declare @pYear_Internal as NVarchar(100) 

set @pYear_Internal = [D FISCALPERIOD].[FP CODE].[FP CODE] 

WITH 

MEMBER MEASURES.[REVENUE] AS [Measures].[TOTAL REVENUE] 

SET LAST5YEARS AS STRTOMEMBER(@pYear_Internal).Lag(4) : 

STRTOMEMBER(@pYear_Internal) 

SELECT 
{ 

[MEASURES].[REVENUE] 

} 

ON COLUMNS, 

EXCEPT(LAST5YEARS,[D FISCALPERIOD].[COMP_FP].&[-1].&[-1]) 

ON ROWS 

FROM 

( 

SELECT STRTOMEMBER(@pYear_Internal).PARENT ON 0 

FROM [Quadrigence] 

) 

При выполнении вышеуказанного запроса, получает ошибку -

Query (1, 9) Parser: The syntax for '@pYear_Internal' is incorrect. 

Похоже, он не признает DECLARE ключевого слова в нем выполняется с SQL-запросами. Мне просто нужен запрос, который выполняется непосредственно против сервера.

Пожалуйста, помогите мне, где я делаю неправильно.

+0

Почему вы хотите объявить переменную в скрипте? Вы загружаете этот сценарий в набор данных какого-либо отчета или хотите сделать из него хранимую процедуру? – SouravA

ответ

0

Путь мы обрабатываем это требование построить динамическую строку MDX переменной и выполнить его с помощью OPENQUERY:

DECLARE @pYear_Internal varchar(31)='SomeValue'; 
DECLARE @MDX varchar(max)='  
SELECT * 
FROM OPENQUERY(MyLinkedServer,'' 
SELECT STRTOMEMBER('[email protected]_Internal+').PARENT ON 0 
FROM [Quadrigence] 
'')'; 
EXECUTE(@MDX); 

Где MyLinkedServer, конечно, связанный сервер для вашего SSAS Server. Таким образом, весь этот запрос должен быть выполнен на SQL Server, который может ссылаться на ваш сервер SSAS.

Смежные вопросы