Comment : |
Cette fonction s'applique aux adaptateurs Microsoft SQL Server et Sybase uniquement.
Microsoft SQL Server et Sybase ont un type de données appelé TIMESTAMP. Plutôt que de contenir un horodatage réel, les colonnes de ce type de données contiennent un certain nombre qui est incrémenté pour chaque enregistrement inséré ou mis à jour dans la source de données. Cet horodatage provient d'un espace commun, il n'existe donc pas deux tables dans la base de données ayant la même valeur que la colonne d'horodatage. La valeur est stockée au format Binaire(8) ou Varbinary(8) dans la table, mais est retournée comme une colonne épaisse alphanumérique double (A16). Vous pouvez utiliser la fonction TSTOPACK pour convertir la valeur de l'horodatage en décimal condensé.
TSTOPACK(tscol, output);
où :
A16
est la colonne tampon heure à convertir.
P21
est le champ qui contient le résultat, ou le format de la valeur de sortie entre guillemets simples (‘).
La commande CREATE TABLE suivante crée un nom de table SQL Server TSTEST qui contient une colonne de compteurs entière nommée I et une colonne d'horodatage nommée TS :
SQL SQLMSS CREATE TABLE TSTEST (I INT, TS timestamp) ; END
Le fichier maître de la source de données TSTEST suit. Le champ TS représente la colonne TIMESTAMP :
FILENAME=TSTEST, SUFFIX=SQLMSS , $ SEGMENT=TSTEST, SEGTYPE=S0, $ FIELDNAME=I, ALIAS=I, USAGE=I11, ACTUAL=I4, MISSING=ON, $ FIELDNAME=TS, ALIAS=TS, USAGE=A16, ACTUAL=A16, FIELDTYPE=R, $
Remarque : lorsque vous générez un synonyme pour une table avec une colonne TIMESTAMP, la colonne TIMESTAMP est créée pour un accès en lecture seule (FIELDTYPE=R).
TSTOPACK convertit la colonne d'horodatage TS en décimal condensé :
DEFINE FILE TSTEST TSNUM/P21=TSTOPACK(TS,'P21'); END TABLE FILE TEST64 PRINT I TS TSNUM END
La sortie est :
Information Builders |