我認爲MDX主要是爲了查詢語言,因此SELECT
聲明是最發展的聲明。還有一些其他DML像UPDATE CUBE
,DRILLTHROUGH
或CALL
陳述,但除了UPDATE
,他們都只是讀取數據,並且使用較少。
然後,有一些DDL命令,但它們僅限於對現有多維數據集或當前查詢會話的輕微調整,您無法使用MDX創建新的多維數據集或維度。用於創建多維數據集或更改維度的SSAS的「真正的DDL命令」等是XMLA命令,而不是MDX語句。
DCL類似於GRANT
或REVOKE
的陳述在MDX中不可用。
和for語句的第四類,你在SQL發現,該過程語句像if
語句(而不是if
表達式)或循環結構,以及服務器端遊標,MDX不提供任何支持,好。這些語句是SQL的一部分,在不同的DBMS如Oracle,SQL Server,DB2,mySQL等之間不是很標準化,僅舉幾例,而基本的DML和DDL或多或少是標準化的 - 在某種程度上所有主要的關係數據庫支持ANSI SQL。即使對於關係數據庫來說,這通常也是一個後來的插件,主要用於存儲過程,觸發器(作爲過程的特例)和批處理。 MySQL被廣泛使用了很多年,沒有支持這些僅在第5版中引入的語句。
對於存儲過程,Analysis Services依賴於COM(不建議使用)和.net,並且在那裏有完整的過程特徵,並且只是使其對象模型可用於.NET或COM。無論如何,存儲過程支持僅限於函數返回一個對象(可能與包含大量數據的MDX集合一樣複雜),或返回結果集的過程。後者不能與其他MDX語句交互,但只需撥打CALL procname(parameters)
即可。對於批處理,MDX只依賴於調用批處理來執行所有條件分支和循環的宿主環境。
事實上,MDX的使用比SQL更受限制,所以在某種程度上,它只是一個"domain specific language",這對於某些目的來說非常有用,但它在非預期的領域存在很多缺陷。
+1感謝信息 - 也許可能,但仍然不確定 - 我已經用更具體的細節修改了OP。 – whytheq