Cómo: |
Esta función sólo corresponde a los adaptadores de Microsoft SQL Ser ver y Sybase.
Microsoft SQL Server y Sybase incluyen un tipo de datos llamado TIMESTAMP. En lugar de incluir una marca de tiempo real, las columnas con este tipo de datos contienen un número que aumenta con cada registro insertado o actualizado en el origen de datos. Esta marca de tiempo procede de un área común, por lo tanto, no puede haber dos tablas en la base de datos que tengan el mismo valor de columna de marca de tiempo. El valor se almacena con el formato Binary(8) o Varbinary(8), en la tabla, aunque se devuelve como columna alfanumérica de doble ancho (A16). Puede usar la función TSTOPACK para convertir el valor de marca de tiempo a decimal empaquetado.
TSTOPACK(tscol, output);
donde:
A16
Es la columna de marca de tiempo que se va a convertir.
P21
Es el nombre del campo que contiene el resultado, o el formato del valor de salida puesto entre comillas solas (‘).
El siguiente comando CREATE TABLE crea un TSTEST de nombre de tabla de SQL Server, que contiene una columna de contador de números enteros, llamada I, y una de marca de tiempo, TS:
SQL SQLMSS CREATE TABLE TSTEST (I INT, TS timestamp) ; END
El archivo máster del origen de datos TSTEST es el siguiente. El campo TS representa la columna 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, $
Nota: Cuando se genera una tabla para un sinónimo con una columna TIMESTAMP, la columna TIMESTAMP sólo podrá ser leída (FIELDTYPE=R).
TSTOPACK convierte la columna de marca de tiempo TS a decimal empaquetado:
DEFINE FILE TSTEST TSNUM/P21=TSTOPACK(TS,'P21'); END TABLE FILE TEST64 PRINT I TS TSNUM END
La salida es:
WebFOCUS |