0

私は 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;

execute :T を使用すると、この出力が得られます ここに画像の説明を入力

この出力の SUM(length) を同じプロシージャ内の変数に格納したいと思います。

それは可能ですか?助けはありますか?

前もって感謝します

4

3 に答える 3

0

ここで動的 SQL を使用する理由がよくわかりません。動的 SQL (実行/即時実行) では、結果セットにアクセスできません。または、カーソルを使用することもできます。SCHEMA_NAME と TABLE_NAME にパラメーターを指定して、そのように「動的」にすることができます。

この質問は、 SAP HANAがcsvデータサイズを正しく取得することに関連していると思いますか?

于 2016-12-12T20:35:50.143 に答える