我是SAP HANA的新手,我試圖在存儲過程中生成一個查詢並執行它。在一個過程中生成的SAP HANA執行查詢
我得到一個錯誤,我不確定HANA可以做那樣的事情。
這裏我的代碼
CREATE PROCEDURE "PROCEDURE_IBA_TESTCSV"(
IN SCHEMA_NAME VARCHAR(100))
LANGUAGE SQLSCRIPT SQL SECURITY INVOKER AS
BEGIN
DECLARE T VARCHAR(1000);
DECLARE TA VARCHAR(1000);
SELECT
' SELECT ' || MAX(C_1) || IFNULL(MAX(C_2),'')|| IFNULL(MAX(C_3),'') ||' AS STATEMENT FROM ' || SCHEMA_NAME || '.' || TABLE_NAME || ' ' INTO T
FROM (
SELECT POSITION, DATA_TYPE_ID, COLUMN_NAME ,SCHEMA_NAME, TABLE_NAME ,
CASE WHEN POSITION = 1 THEN
' CASE WHEN ('|| COLUMN_NAME ||' IS NULL) THEN '''' ELSE REPLACE(TO_CHAR(' || COLUMN_NAME || '),''.'','','') END' END AS C_1,
CASE WHEN POSITION = 2 THEN '||''#''|| CASE WHEN ('|| COLUMN_NAME ||' IS NULL) THEN '''' ELSE TO_NVARCHAR('||COLUMN_NAME||') END' END AS C_2,
CASE WHEN POSITION = 3 THEN '||''#''|| CASE WHEN ('|| COLUMN_NAME ||' IS NULL) THEN '''' ELSE TO_NVARCHAR('||COLUMN_NAME||') END' END AS C_3
FROM (
select SCALE,SCHEMA_NAME,position,TABLE_NAME,column_name, data_type_id from TABLE_COLUMNS where
schema_name ='IMPORT_KT_STAMM_IK_348BA_20160706' AND TABLE_NAME='CLS_220_KTHISTORIE')) group by SCHEMA_NAME,TABLE_NAME;
execute immediate :T ;
INSERT INTO Test SELECT :T from DUMMY;
END;
我想此輸出的SUM(長度)存儲到相同的過程中的變量。
這可能嗎?任何幫助?
在此先感謝
你好拉爾斯, 謝謝你的回覆,是的,正好我想嘗試生成sql,給我一個選項卡與csv數據,然後我做這個表的長度的總和,我做了3個例子,我得到了一個很好的結果,完全像csv數據的大小。 你能幫我嗎?當我做了執行:我得到了csv表。我並不需要動態SQL,我只需要將T的輸出轉換爲一個變量並進行求和(長度)即可。謝謝 –
我可以寫DECLARE CURSOR c_products FOR:T? –