2017-06-14 48 views
0

我正在嘗試創建一個表格類型,它具有作爲SAP Hana中列類型的ARRAY。當我使用標準的DDL創建的表類型,即在Hana中創建一個列存儲表類型

CREATE TYPE MYSCHEMA.TABNAME AS TABLE("ObjList" INTEGER ARRAY); 

我收到以下錯誤:

Could not execute 'CREATE TYPE "schema"."ListType" AS TABLE ("ID" BIGINT  CS_FIXED, ...' 
SAP DBTech JDBC: [7]: feature not supported: cannot create row table having array type: ObjList 

這是從文檔如何創建列存儲類型的表型不清楚。由於我將.NET代碼中的ARRAY值傳遞給HANA中的存儲過程以進行批量更新/ upsert,因此我無法解決此需求。

TIA

回答

1

有沒有方法來創建列的表類型 - 表類型總是一排結構,他們定義的記錄應該是什麼樣子等。類型不存儲數據,所以在這裏沒有區別行/列/什麼。

對於您想要做的事情 - 將客戶端應用程序的ARRARYs交給SAP HANA--這種差異並不重要,因爲這根本無法做到。 您可以在過程/函數和表之間傳遞數組,但是沒有外部接口可以向它們提供數據。 只有ARRAY()函數可以在服務器端創建數組。 如果你搜索「花陣」在這裏的話,你會發現,這已經相當廣泛討論過......

Insert array in HANA with JAVAUpload an array in HANAHow to insert an array in a loop to the database列出幾個例子。

+0

謝謝拉爾斯!我正在考慮使用全局臨時列表而不是表格類型來處理上述情況。我懷疑是因爲我使用ado.net的客戶端API的方法'WriteToServer()',我會傳遞一個數據表到服務器。我可以將我的源類型定義爲字符串,並將其構造爲ARRAY()並使用WriteToServer()發送它,因爲我可以利用批量插入功能,從而提高效率。 –

+0

我試着在'WriteToServer()'方法中傳遞一個數據表,如下所示,導致出現以下異常:'不支持在GROUPBY,WHERE,ORDERBY的臨時表上使用SELECT數組'我對於出錯的問題毫無頭緒.Is它由於datatable的源列具有字符串作爲數據類型的事實? –

相關問題