Hola,
tengo una base de datos en sql server 2000.
tengo en un Store Procedure (sp) un insert asi:
Código:
--Cargamos en historial de facturas(contenido)
insert into h_facturas_contenido select
@maquina,@nf,getdate(),codigo,
cant,descripcion,unitario,totales,
@dias,dbo.nombre_cliente(@idcliente),
dbo.direccion_cliente(@idcliente),
@guia,@obs,tipoprecio
from factura_temp
where maquina=@maquina
observen que tenemos un total de 14 campos que se insertan, pero esta table tiene 15 porque uno es identity, el identity estaria entre @obs y tipoprecio por lo cual en este insert no se indica porque es identity, el mismo server lo sabe, ahora bien, observen este insert a la misma tabla pero en otro SP
Código:
insert into h_facturas_contenido
values(
@maquina,@numero,@fecha,@codigo,@cant,@descrip,@unitario,@totales,
@dias,@nombre,@direccion,@guia,@obs,@tp
)
observen que entre las variables (que tienen datos) @obs y @tp tampoco pongo algo para el identity dado que "supuestamente" el server inserta el numero que sigue, bien, este ultimo insert no anda porque cuando quiero grabar el SP me dice que el insert tiene menos campos que los que tiene la tabla, pero si entre las variables @obs y @tp pongo asi: @obs,0,@tp para indicar el identity , me dice :
An explicit value for the identity column in table 'h_facturas_contenido' can only be specified when a column list is used and IDENTITY_INSERT is ON.
entonces no entiendo porque en un SP anda y en otro no!!! y no comprendo ese mensaje en ingles.
Alguna idea?