Использование заполнителя HANA Calc View при объединении в табличную функцию или хранимую процедуру - PullRequest
0 голосов
/ 03 июля 2018

HANA версия: SP12

Все

Я успешно создал Calc Views с INPUT_PARAMETERS, как описано Ларсом во многих блогах и форумах. Хотя эти представления работают без проблем при запросе напрямую для одного и нескольких входов, я сталкиваюсь с проблемой при выполнении объединений в самом представлении Calc в хранимой процедуре или табличной функции.

Пример:

" BASE_SCHEMA". "BASE_TABLE_EXAMPLE " - количество записей (*) ~ 2 миллиона записей

  • Ключи: Материал (20 000 различных), Завод (200 различных)

" _SYS_BIC". "CA_EXAMPLE_PRODUCTIVITY "

  • Входные параметры: IP_MATNR (nvarchar (5000)), IP_PLANT (nvarchar (5000))

Проблема № 1: максимальное значение для nvarchar равно 5000. Невозможно использовать несколько входов в параметре, если количество различных символов равно 5000 +.

Проблема № 2: Как использовать логику PLACEHOLDER в том же методе выполнения INNER_JOIN в SQL.

base_data = 

  select 
  PLANT
 ,MATERIAL

 from "BASE_SCHEMA"."BASE_TABLE_EXAMPLE"
 group by PLANT,MATERIAL; 

Я бы подумал выполнить нижеприведенное, но вывод вызовет проблемы при конкатенации нескольких строк для использования внутри входного параметра nvarchar (5000).

select

string_agg(PLANT,''',''') as PLANT
,string_agg(MATERIAL,''',''') as MATERIAL
into var_PLANT, var_MATERIAL

from
(
   select

   PLANT
   ,MATERIAL

   from :base_data
);

Несмотря на то, что до этого момента я добился успеха, после добавления переменных в PLACEHOLDER в представлении Calc не удается указать, что я передаю слишком много символов IP. Какие-либо предложения??? Заранее спасибо.

base_calc =

  select

  PLANT
  ,MATERIAL
  ,MATERIAL_BU
  ,etc....

  from "_SYS_BIC"."CA_EXAMPLE_PRODUCTIVITY"

  (PLACEHOLDER."IP_MATNR"=> :var_MATERIAL,  --<---Fails here. :(
   PLACEHOLDER."IP_PLANT"=> :var_PLANT);

Вопрос задан в SAP SCN. Расположен здесь !

1 Ответ

0 голосов
/ 06 февраля 2019

Вы пытались использовать предложение WHERE вместо PLACEHOLDER?

base_calc =

select

PLANT,
MATERIAL,
MATERIAL_BU,
etc....

from "_SYS_BIC"."CA_EXAMPLE_PRODUCTIVITY"

WHERE MATERIAL = var_MATERIAL AND PLANT = var_PLANT;
...