Pregunta

Tengo un Progreso de la base de datos que estoy realizando un ETL de.Una de las tablas que estoy leyendo de no tener una clave única, así que necesito acceder a la ROWID ser capaz de identificar la fila.¿Cuál es la sintaxis para acceder a la ROWID en Progreso?

Entiendo que hay problemas con el uso de ROWID para la identificación de fila, pero es todo lo que tengo ahora.

¿Fue útil?

Solución

Una rápida advertencia por mi respuesta - es de casi 10 años, desde entonces he trabajado con El progreso así que mi conocimiento es probablemente más que un poco fuera de fecha.

La comprobación de la El Progreso De Referencia Del Lenguaje [PDF] parece mostrar que las dos funciones recuerdo todavía están allí: ROWID y RECID.El ROWID la función es más reciente y es el preferido.

En Progress 4GL tendría que utilizar algo como esto:

FIND customer WHERE cust-num = 123.
crowid = ROWID(customer).

o:

FIND customer WHERE ROWID(customer) = crowid EXCLUSIVE-LOCK.

La comprobación de la El progreso de Referencia de SQL [PDF] muestra ROWID también está disponible en SQL como un Progreso de la extensión.Usted lo uso así:

SELECT ROWID, FirstName, LastName FROM customer WHERE cust-num = 123

Editar: Editado siguientes Stefan retroalimentación.

Otros consejos

Dependiendo de su situación y el comportamiento de la aplicación, esto puede o puede no importar, pero usted debe ser consciente de que ROWIDs & RECIDs se reutilizan y que pueden cambiar.

1) Si se elimina un registro es ROWID eventualmente ser reutilizados.

2) Si la tabla es reorganizado a través de un volcado de carga o un tablemove a una nueva área de almacenamiento, a continuación, los ROWIDs va a cambiar.

Para añadir un poco de Dave Webb respuestas.Yo había tratado de ROWID en la instrucción select, pero fue dado un error de sintaxis.ROWID sólo funciona si se especifica el resto de las columnas para seleccionar, no se puede utilizar *.

Esto NO funciona:

SELECT ROWID, * FROM customer WHERE cust-num = 123

Esto funciona:

SELECT ROWID, FirstName, LastName FROM customer WHERE cust-num = 123

Una rápida búsqueda en google se convierte en esto:http://bytes.com/forum/thread174440.html

Lea el mensaje en la parte inferior por greg@turnstep.com (usted quiere oid o ctid dependiendo de lo que te garantiza que quiere volver a la persistencia y la singularidad)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top