PW01-L06 · Zmena logiky

Náhradná hodnota pri null

Nahraďte SQL ISNULL explicitnou kontrolou null.

Špecifické pre ProjectWise
Výsledok migrácie

Nebudete zamieňať null, chýbajúci objekt a prázdny text.

ProjectWise kontext

Všeobecný výraz v ProjectWise CEL

SQL funkciaPôvodná konfigurácia ProjectWise
ISNULL(prop, 'ABC')
CELProjectWise CEL
prop == null ? 'ABC' : prop

Čo je odlišné

CEL vyžaduje, aby výraz pomenoval podmienku aj obe vetvy. To zviditeľňuje rozhodnutie, ktoré SQL ISNULL ukrýva vo funkcii.

  1. null nie je to isté ako prázdny string.
  2. Dereferencovanie null objektu skončí chybou ešte pred použitím náhradnej hodnoty.
  3. Niektoré objektové vlastnosti ProjectWise vracajú prázdny objekt namiesto null.

Cieľ migrácie

Vráťte náhradný text iba vtedy, keď je pôvodná hodnota null.

Čo sa mení

Namiesto SQL funkcie CEL používa explicitnú podmienku. Takýto zápis neznamená, že zachytí chybu spôsobenú skorším prístupom k vlastnosti null objektu.

Prečo je CEL riešenie presnejšie

Review môže skontrolovať podmienku aj oba výsledky. Zároveň je jasné, že prázdny string sa nezmení na náhradnú hodnotu.

Pred nasadením

Otestujte null, prázdny string a platnú hodnotu osobitne. Ak prop vzniká z objektu, najprv bezpečne skontrolujte tento objekt.

Zdroje

  • BENTLEY-PW-CEL-SQL-FUNCTIONS — náhrada ISNULL.
  • BENTLEY-PW-CEL-NULLS — rozdiel medzi null objektom a prázdnym objektom.