Insert Masivo con correlativo

24/06/2008 - 21:04 por Penta | Informe spam
Estimados.
Utilizo SS2000 SP4

Tengo una consulta donde el resultado son 100 codigos de clientes y
necesito insertar los datos en la tabla Historia, la tabla historia
tiene un campo lamado correlativo, donde el campo lamentablemente no
esta como identidad, ya va en el 35100 la idea es insertar los nuevos
100 registros con el correlativo correspondiente.
Ya tengo una solucion, pero quede con la duda de porque motivo la
funcion IDENTITY no me acepta pasar el dato como un max(campo)+1 o con
una variable @correlativo

SELECT IDENTITY(int, 35100,1) AS ID_Num
INTO NewTable
FROM Clientes

Como veran trate de reemplazar el dato 35100 por un max(campo)+1 o por
una variable que ya contiene el valor @correlativo.

Me marca ERROR.

Atte.
Penta.

Preguntas similare

Leer las respuestas

#1 Gux (MVP)
24/06/2008 - 21:59 | Informe spam
No tengo ahora un SQL Server a mano para probar... pero si no recuerdo mal
los valores de los argumentos de la función IDENTITY tienen que ser
constantes. No se admiten expresiones de ningún tipo.

Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Penta" wrote:

Estimados.
Utilizo SS2000 SP4

Tengo una consulta donde el resultado son 100 codigos de clientes y
necesito insertar los datos en la tabla Historia, la tabla historia
tiene un campo lamado correlativo, donde el campo lamentablemente no
esta como identidad, ya va en el 35100 la idea es insertar los nuevos
100 registros con el correlativo correspondiente.
Ya tengo una solucion, pero quede con la duda de porque motivo la
funcion IDENTITY no me acepta pasar el dato como un max(campo)+1 o con
una variable @correlativo

SELECT IDENTITY(int, 35100,1) AS ID_Num
INTO NewTable
FROM Clientes

Como veran trate de reemplazar el dato 35100 por un max(campo)+1 o por
una variable que ya contiene el valor @correlativo.

Me marca ERROR.

Atte.
Penta.


Respuesta Responder a este mensaje
#2 jcac
25/06/2008 - 00:46 | Informe spam
Hola Penta,

Le tienes que colocar al lado los datos de los 100 clientes, algo asi:

select identity(int, 35010, 1) as id_num, <campos de 100 clientes>
into newtable
from clientes

espero te sirva.

Saludos

Juan Carlos


"Penta" escribió en el mensaje
news:
Estimados.
Utilizo SS2000 SP4

Tengo una consulta donde el resultado son 100 codigos de clientes y
necesito insertar los datos en la tabla Historia, la tabla historia
tiene un campo lamado correlativo, donde el campo lamentablemente no
esta como identidad, ya va en el 35100 la idea es insertar los nuevos
100 registros con el correlativo correspondiente.
Ya tengo una solucion, pero quede con la duda de porque motivo la
funcion IDENTITY no me acepta pasar el dato como un max(campo)+1 o con
una variable @correlativo

SELECT IDENTITY(int, 35100,1) AS ID_Num
INTO NewTable
FROM Clientes

Como veran trate de reemplazar el dato 35100 por un max(campo)+1 o por
una variable que ya contiene el valor @correlativo.

Me marca ERROR.

Atte.
Penta.

Respuesta Responder a este mensaje
#3 Penta
25/06/2008 - 15:22 | Informe spam
Estimado jcac
El problema es justamente ese que donde va el numero de donde empieza
el identity no es fijo, es un max() de una tabla, pero el problema es
que la funcion no acepta argumentos.

Atte.
Penta.
Respuesta Responder a este mensaje
#4 jcac
25/06/2008 - 16:54 | Informe spam
Hola Penta,

Una solucion es que lo realices de esta forma.

declare @valor int, @cadena varchar(1000)
set @valor = 35010
set @cadena = 'select identity(int, ' + convert(varchar(100), @valor) + ',
1) as a, prod_codprod into tmp from productos where fami_codigo = ''214'''
print @cadena
exec (@cadena)
select * from tmp

Bueno esta con una tabla mia pero te puede servir la idea

Saludos

Juan Carlos

"Penta" escribió en el mensaje
news:
Estimado jcac
El problema es justamente ese que donde va el numero de donde empieza
el identity no es fijo, es un max() de una tabla, pero el problema es
que la funcion no acepta argumentos.

Atte.
Penta.
Respuesta Responder a este mensaje
#5 Penta
26/06/2008 - 17:47 | Informe spam
Jcac
TODA LA RAZON !!!!!

Muchas Gracias.
Penta.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida