rowid de oracle en sql-server

28/01/2004 - 11:30 por Sergio Forever | Informe spam
Buenas me gustaria saber si existe alguna pseudocolumna en sql server 2000
que funcione igualmente que la pseudo columna rowid de Oracle.

Gracias. Salu2!!!
 

Leer las respuestas

#1 Adrian Garcia
28/01/2004 - 23:12 | Informe spam
No existe una funcion similar pero con cuidado puedes simularla de la
siguiente forma:

Supongamos que tienes una tabla 'Productos' y deseas obtener un resultado
que contenga el nro. de posicion de la secuencia dentro del resultado, se
podria generar de la siguiente forma...

SELECT IDENTITY(int,1,1) AS ROWID, Productos.*
INTO #TEMP
FROM Products

SELECT * FROM #TEMP

DROP TABLE #TEMP

Esto funciona si en la tabla Productos no tienes ninguna columna con la
propiedad IDENTITY definina. Si la tienes SQL Server generara el error de
que no se puede definir 2 columnas con esta propiedad en una misma tabla.

La solucion es la siguiente, supongamos que la tabla Productos tuviese una
columna "codigo" con la propiedad IDENTITY definida:

SELECT IDENTITY(int,1,1) AS ROWID, CAST(Productos.codigo AS INT), Productos

INTO #TEMP
FROM Productos

SELECT * FROM #TEMP

DROP TABLE #TEMP

El CAST soluciona el tema...

Hay que tener en consideracion que luego no pdras utilizar este ID para
obtener la fila especifica a menos que persistas la tabla #TEMP y que si la
tabla de Productos es grande estariamos sobrecargando al motor.

Saludos
Adrian D. Garcia
NDSoft


"Sergio Forever" wrote in message
news:
Buenas me gustaria saber si existe alguna pseudocolumna en sql server 2000
que funcione igualmente que la pseudo columna rowid de Oracle.

Gracias. Salu2!!!


Preguntas similares