posso colocar uma consulta sql em um espaço reservado sql hana
posso colocar uma consulta sql em um espaço reservado sql hana ?
a seguinte consulta funciona:
Select * From table1
('PLACEHOLDER' = ('$$IP_ShipmentDate$$', '2020-01-01'))
Estou tentando passar algo como o seguinte:
Select * From table1
('PLACEHOLDER' = ('$$IP_ShipmentDate$$',
Select TO_VARCHAR(min("some_date"),'YYYY-MM-DD') from Table2)
Atualmente recebendo um erro de syntex
Respostas
Como erro diz você, expressões não são suportados para o parâmetro vista coluna: Can't use column expression as column view parameter
.
No entanto, existem opções para calculá-lo:
- Se o valor do seu parâmetro estiver semanticamente relacionado a esta visualização calculada (por exemplo, você precisa de algum valor padrão para esta visualização que é calculada com base em alguma lógica), então você pode criar um procedimento armazenado com um parâmetro de saída para calcular o valor e usar o tipo de parâmetro Derivado do procedimento / função escalar . Para tornar esse valor ajustável a partir do frontend, você pode marcá-lo como Input enabled . Ou se o valor calculado for baseado na entrada do usuário, você pode mapear os parâmetros de entrada do procedimento para os parâmetros de entrada da visualização de cálculo na seção Parâmetros / Variáveis -> Procedimentos / Funções escalares para parâmetros de entrada .
create procedure sp_dummy (
in dummy nvarchar(10) default '0',
out val nvarchar(10)
)
as begin
val = to_char(current_date, 'yyyymmdd');
end;


- Se o valor do seu parâmetro não estiver relacionado à visualização de cálculo e você apenas usar a visualização de cálculo para obter alguns dados para esse valor, poderá usar o recurso de conjunto de resultados do procedimento armazenado / bloco SQLScript. Se o seu executor SQL não tentar analisar a instrução SQL (por exemplo, SAP BO verifica
SELECT
como a primeira palavra SQL após algum SP em diante, portanto, esta forma não será válida para ele) e apenas obtém o conjunto de resultados como metadados para definições de coluna, então você pode evitar objetos extras para envolver a lógica de cálculo.
Para retornar um conjunto de resultados, use uma instrução SELECT porque os blocos anônimos não têm parâmetros definidos.
do begin
declare lv_param nvarchar(100);
select max('some_date')
into lv_param
from dummy /*your_table*/;
select *
from "_SYS_BIC"."path.to.your.view/CV_TEST" (
PLACEHOLDER."$$P_DUMMY$$" => :lv_param
);
end;
Isso com visão de cálculo com base na tabela RSPCLOGCHAIN
filtrada pela saída do procedimento declarado acima me dá
LOG_ID | DATUM | INPUT_PARAM | CUR_DATE
--------------------------+----------+-------------+----------
8FRV39X1O8814X6IJMLPI47PV | 20201221 | some_date | 20201221
C7S9EY3J0GYA76Y2S9CIA39QR | 20201221 | some_date | 20201221
35R8A3RFUG00EBY8MZQWJLIXF | 20201221 | some_date | 20201221
850MVHOJIKIDD7EVY6WFIYPZN | 20201221 | some_date | 20201221
Não, isso não é compatível.
A interface do parâmetro é apenas para cadeias de caracteres . SELECTs ou expressões não serão avaliados pelo HANA.
Para obter parâmetros de seleção dinâmica (digamos, a data atual ou três semanas atrás ), você pode querer definir os valores padrão por meio de procedimentos armazenados ou calcular os valores desejados na ferramenta cliente (front-end).