puis-je placer une requête sql dans un espace réservé hana sql
puis-je placer une requête SQL dans un espace réservé hana SQL ?
la requête suivante fonctionne:
Select * From table1
('PLACEHOLDER' = ('$$IP_ShipmentDate$$', '2020-01-01'))
J'essaye de passer quelque chose comme ce qui suit:
Select * From table1
('PLACEHOLDER' = ('$$IP_ShipmentDate$$',
Select TO_VARCHAR(min("some_date"),'YYYY-MM-DD') from Table2)
Obtention actuelle d'une erreur de syntex
Réponses
Comme erreur vous dit, les expressions ne sont pas pris en charge pour le paramètre de vue de la colonne: Can't use column expression as column view parameter
.
Cependant, il existe des options pour le calculer:
- Si la valeur de votre paramètre est sémantiquement liée à cette vue calculée (par exemple, vous avez besoin d'une valeur par défaut pour cette vue qui est calculée selon une logique), vous pouvez créer une procédure stockée avec un paramètre de sortie pour calculer la valeur et utiliser le type de paramètre Dérivé de la procédure / fonction scalaire . Pour rendre cette valeur ajustable depuis le frontend, vous pouvez la marquer comme entrée activée . Ou si la valeur calculée est basée sur l'entrée utilisateur, vous pouvez mapper les paramètres d'entrée de la procédure aux paramètres d'entrée de la vue de calcul dans la section Paramètres / Variables -> Procédures / Fonctions scalaires pour les paramètres d'entrée .
create procedure sp_dummy (
in dummy nvarchar(10) default '0',
out val nvarchar(10)
)
as begin
val = to_char(current_date, 'yyyymmdd');
end;


- Si la valeur de votre paramètre n'est pas liée à la vue de calcul et que vous utilisez simplement la vue de calcul pour obtenir des données pour cette valeur, vous pouvez utiliser la fonctionnalité de jeu de résultats de la procédure stockée / bloc SQLScript. Si votre exécuteur SQL n'essaie pas d'analyser l'instruction SQL (par exemple, SAP BO vérifie
SELECT
comme premier mot SQL après certains SP, donc cette méthode ne sera pas valide pour cela) et obtient simplement l'ensemble de résultats sous forme de métadonnées pour les définitions de colonne, alors vous pouvez éviter un objet supplémentaire pour envelopper la logique de calcul.
Pour renvoyer un jeu de résultats, utilisez une instruction SELECT car les blocs anonymes n'ont aucun paramètre défini.
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;
Cela avec vue de calcul basée sur le tableau RSPCLOGCHAIN
filtré par sortie de la procédure déclarée ci-dessus me donne
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
Non, ce n'est pas pris en charge.
L'interface des paramètres est réservée aux chaînes de caractères . Les SELECT ou expressions ne seront pas évalués par HANA.
Pour obtenir des paramètres de sélection dynamique (par exemple, la date actuelle ou il y a trois semaines ), vous pouvez envisager de définir les valeurs par défaut via des procédures stockées ou de calculer les valeurs souhaitées dans l'outil client (frontal).