Recuperar identity de un osql

04/10/2006 - 18:00 por Prado | Informe spam
Hola,

estoy ejecutando un insert en una tabla con un comando osql, cuando
intento recuperar el identity generado por el insert siempre recibo
NULL, tanto si asigno a la variable el valor de @@identity como si le
asigno SCOPE_IDENTITY().

¿Alguien sabe si se puede recuperar?¿Como?

Gracias por anticipado,

Prado

Preguntas similare

Leer las respuestas

#6 Javier Loria
08/10/2006 - 22:58 | Informe spam
Hola Prado:
En esta caso no necesitas usar el OSQL basta con usar SQL Dinamico.
Espero que el siguiente ejemplo te sirva:
=ÞCLARE @Numero SMALLINT
DECLARE @Insert NVARCHAR(500)
SET @Insert=N'INSERT HumanResources.Department(Name, GroupName)
VALUES(''TEST'', ''TEST'')
SELECT @Numero=SCOPE_IDENTITY()'
EXEC sp_executesql @Insert, N'@Numero INT OUTPUT', @Numero OUTPUT
PRINT 'El numero asignado es: '+CAST(@Numero AS VARCHAR(6))
==Fijate en la tripe creacion de la variable @Numero
a) Primero en la parte interna (DECLARE @Numero... )
b) Luego en como NVARCHAR pasando como parametro N'@Numero INT OUTPUT'
c) Por ultimo pasas la variable declarada para "conectar" la interna con
la externa.
Saludos,

Javier Loria
Costa Rica-MVP
Solid Quality Learning

"Prado" wrote in message
news:
Hola,

¿alguna sugerencia sobre cual es el error que estoy comitiendo o
como debería hacerlo?

Gracias por anticipado,

Prado

Prado ha escrito:

Perdona pero no comprendo tu pregunta. Esto es parte de un
procedimiento almacenado, en la parte que envio he omitido el nombre
del servidor y de la BD sustituyendolo por el contenido entre
corchetes, en el procedimiento si que aparecen.

Tambien me he dado cuenta de que no he incluido la declaración de la
variable @target que es un parámetro que recibe el procedimiento. Pero
no "veo" donde esta el problema.

Gracias,

Prado

Maxi ha escrito:

> De donde estas ejecutando esto? porque aca estas teniendo el problema
>
>
> Salu2
>
> Microsoft MVP SQL Server
> Culminis Speaker
> INETA Speaker
>
> "Prado" escribió en el mensaje
> news:
> Dentro de un procedimiento almacenado, las instrucciones son las
> siguientes:
>
> declare @ID_Integrity int
> declare @osql2 VARCHAR(512)
> set @osql2='osql /E /S [nombreservidor] /d [nombreBD] /Q "insert
> IntegrityChecks (Servername,Databasename,Repairneeded,Repairdone,
> CheckDate)
> values ('''+@@ServerName +''','''+ @target + ''', 0 , 0, getdate() )"'
>
> set @ID_Integrity = @@identity
>
> Necesito recuperar el identity que genera esta inserción para despues
> poder actualizar el registro que inserto. Es un procedimiento que puede
> tener varias ejecuciones a la vez.
>
> Gracias,
>
> Prado
>
> Maxi ha escrito:
>
> > Hopl, podrias mostrar como lo estas haciendo?
> >
> >
> > Salu2
> >
> > Microsoft MVP SQL Server
> > Culminis Speaker
> > INETA Speaker
> >
> > "Prado" escribió en el mensaje
> > news:
> > Hola,
> >
> > estoy ejecutando un insert en una tabla con un comando osql, cuando
> > intento recuperar el identity generado por el insert siempre recibo
> > NULL, tanto si asigno a la variable el valor de @@identity como si le
> > asigno SCOPE_IDENTITY().
> >
> > ¿Alguien sabe si se puede recuperar?¿Como?
> >
> > Gracias por anticipado,
> >
> > Prado
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida