OS-onafhankelijk maken van padnamen in Invantive UniversalSQL en Invantive Script

Soms is het nodig om Invantive UniversalSQL en Invantive Script statements te gebruiken die ongewijzigd op verschillende OS-platformen moeten kunnen draaien. Het is dan belangrijk om als er gegevens uitgewisseld worden met het operating system om de juiste notatie te gebruiken. In dit topic lees je hoe je de scheidingstekens in padnamen OS-onafhankelijk kunt maken.

Voor gebruik in Invantive UniversalSQL kan gebruik gemaakt worden van de context USERENV of een query op SystemProperties@DataDictionary.

Query op SystemProperties

Met een query op SystemProperties@DataDictionary gaat dat als volgt:

select *
from   SYSTEMPROPERTIES@DataDictionary
where  name like 'environment-%-separator%'

met als resultaat:

Path separator system properties

SYS_CONTEXT functie op USERENV

Gebruik makend van de context ‘USERENV’ kunnen de scheidingstekens opgevraagd worden met:

select 'Path Separator'
,      sys_context('USERENV', 'PATH_SEPARATOR') val
union all
select 'Directory Separator'
,      sys_context('USERENV', 'DIRECTORY_SEPARATOR')
union all
select 'Directory Separator (Alternative)'
,      sys_context('USERENV', 'DIRECTORY_SEPARATOR_ALT')
union all
select 'Volume Separator'
,      sys_context('USERENV', 'VOLUME_SEPARATOR')

met als resultaat:

userenv scheidingstekens

Invantive Script

Invantive Script wordt veel gebruikt in Invantive Data Hub en Invantive Query Tool om gegevens uit te wisselen en daarom zijn er ook mogelijkheden rechtstreeks binnen Invantive Script:

select 'Path Separator: ${system:pathseparator}'
union all
select 'Directory Separator: ${system:directoryseparator}'
union all
select 'Directory Separator (Alternative): ${system:directoryseparatoralt}'
union all
select 'Volume Separator: ${system:volumeseparator}'

geeft:

Invantive Script separators

Een padnaam kan bijvoorbeeld als volgt samengesteld worden:

local define OUT_FOLDER "${system:userdocumentsdirectory}${system:directoryseparator}myfolder"

Beschikbaarheid

De beschreven mogelijkheden zijn beschikbaar vanaf versie 20.1.467 BETA.