Simplicate parameter

Ik probeer de tabel Simplicate.Hours.HoursTimesheetrow@spe te bekijken. Hiervoor heb ik de parameters start_date, end_date en employee_id voor nodig. Als ik deze query uitvoer:

select *
from   Simplicate.Hours.HoursTimesheetrow@spe
       ( start_date => '2023-01-01'
       , end_date < '31-12-2024'
       , employee_id = 'employee:0203401f7c9599446d44e34a3f0f8c3d'
       )
limit  1000

Dan krijg ik de volgende melding:

itgensql056:
Syntax error between the two ‘***’ on line 2, column 83:
select *from Simpli…‘2023-01-01’, end_date < ‘31-12-2024’, employee_id = 'emp…
Error: no viable alternative at input ‘select *\nfrom Simplicate.Hours.HoursTimesheetrow@spe(start_date => ‘2023-01-01’, end_date <’.

Als ik eerst alleen de parameter voor startdate uitvoer krijg ik de volgende melding:

itgenttn290
U heeft een parameter met de naam ‘START_DATE’ opgegeven, maar er is geen parameter met die naam in ‘Simplicate.Hours.HoursTimesheetrow’.

Hoe kan ik deze query correct schrijven?

Parameters voor een tabelfunctie dienen meegegeven te worden op basis van naam of positie. In dit geval wordt gebruik gemaakt van “naam” zoals beschreven in Wat zijn tabelfuncties en tabelfunctieparameters?.

Elk naam dient gevolgd te worden door =>. Deze => heeft geen relatie met “groter dan/gelijk”. De => is een “pijl” zoals ook in sommige andere programmeertalen voorkomt, waarbij de naam aan de linkerzijde staat en de gewenste waarde aan de rechterzijde.

Zie ook “association operator” in Invantive UniversalSQL Grammar 23.0

Advies is om de < bij end_date te vervangen door =>, en de = bij employee_id ook door =>.

ik heb de query aangepast naar:

select *
from   Simplicate.Hours.HoursTimesheetrow@spe
       ( start_date => '2023-01-01'
       , end_date => '31-12-2024'
       , employee_id => 'employee:0203401f7c9599446d44e34a3f0f8c3d'
       )
limit  1000

Hierbij krijg ik de volgende melding:

U heeft een parameter met de naam 'START_DATE' opgegeven, maar er is geen parameter met die naam in 'Simplicate.Hours.HoursTimesheetrow'.

Onder release 24.0.194 kan dit opgewekt worden door de nieuwe tabelnaam te gebruiken (zie ):

select *
from   Simplicate.Hours.HourTimesheetsByDatesAndEmployeeId@spe
       ( start_date => '2023-01-01'
       , end_date => '31-12-2024'
       , employee_id => 'employee:0203401f7c9599446d44e34a3f0f8c3d'
       )
limit  1000

Hierbij treedt een foutmelding itgenttn290 op:

You have provided a parameter with name ‘START_DATE’, but there is no parameter with that name in ‘Simplicate.Hours.HourTimesheetsByDatesAndEmployeeId’

Het is onhandig dat er geen hints gegeven worden. Normaliter verschijnen er wel hints. Voor een volgende release zal hierin gepoogd worden een zinvolle hint te geven met alternatieve parameternamen.

De parameternamen zijn echter ook op te vragen via bijvoorbeeld het datadictionary:

select name
from   SystemTableFunctionParameters@DataDictionary
where  table_name = 'HourTimesheetsByDatesAndEmployeeId'
order
by     sorting_order

met als resultaat:

  • q[employee_id]
  • q[start_date]
  • q[end_date]

De kolomnamen zijn niet fraai; die zullen in een volgende release verbeterd worden. In Invantive-intern actiepunt was hiervoor reeds voorhanden.

Voorlopig kan echter volstaan worden door de parameters mee te geven op positie en de datums correct te schrijven (31-12-2024 wordt 2024-12-31):

select *
from   Simplicate.Hours.HourTimesheetsByDatesAndEmployeeId@spe
       ( '2023-01-01'
       , '2024-12-31'
       , 'employee:0203401f7c9599446d44e34a3f0f8c3d'
       )
limit  1000

Dit leidt echter tot een foutmelding:

itgenoda137
itgenoda137: The Simplicate server cannot or will not process the request due to an apparent client error (e.g., malformed request syntax, size too large, invalid request message framing, or deceptive request routing).
Message:

De foutmelding ontbreekt.

Met ingang van release 24.0.201 wordt ook de hint getoond in het foutmeldingvenster van de UniversalSQL-editor, evenals tips indien deze gevonden zijn op de forums:

image

Deze vraag is automatisch gesloten na 1 week inactiviteit. Het laatste gegeven antwoord is gemarkeerd als oplossing.

Gelieve een nieuwe vraag te stellen via een apart topic als het probleem opnieuw optreedt. Gelieve in de nieuwe vraag een link naar dit topic op te nemen door de URL er van in de tekst te plakken.

Dit topic is 3 dagen na het laatste antwoord automatisch gesloten. Nieuwe antwoorden zijn niet meer toegestaan.