scope_identity me devuelve NULL

14/12/2009 - 12:45 por Jesus | Informe spam
hola a todos:

estoy intentando consultar el ultimo valor autonumerico que he creado de en
ambito actual y la sesion actual y seimrep me devuelve el valor NULL, seim
embargo @@identity e IDENT_current() me funcionan correctamente.
Lo consulto desde una aplicación de VB6, justo despues de realizar el insert
en la tabla. hago lo siguiente:

Set r_aux = con.OpenResultset("select @@identity")
Res = r_aux(0)

Set r_aux = con.OpenResultset("select SCOPE_IDENTITY()")
Res = r_aux(0)

Set r_aux = con.OpenResultset("select IDENT_CURRENT('tabla')")
Res = r_aux(0)

todos me devuelven el valor correcto, excepto SCOPE_IDENTITY, que es justo
la que quiero consultar, ya que en determinadas ocasiones no coinciden.

Un saludo y gracias

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
14/12/2009 - 13:04 | Informe spam
En la ayuda viene la explicación de por qué no te funciona:

"SCOPE_IDENTITY y @@IDENTITY devuelven los últimos valores de identidad
generados en una tabla en la sesión actual. No obstante, SCOPE_IDENTITY solo
devuelve los valores insertados en el ámbito actual; @@IDENTITY no se limita
a un ámbito específico."

Tienes que consultar SCOPE_IDENTITY en la misma instrucción donde haces el
insert. Bueno, de hecho lo recomendable sería que te crearas un
procedimiento almacenado que realizar la inserción y tuvieras un parámetro
de salida al que le asignaras el valor de SCOPE_IDENTITY.

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático


"Jesus" wrote in message
news:
hola a todos:

estoy intentando consultar el ultimo valor autonumerico que he creado de
en
ambito actual y la sesion actual y seimrep me devuelve el valor NULL, seim
embargo @@identity e IDENT_current() me funcionan correctamente.
Lo consulto desde una aplicación de VB6, justo despues de realizar el
insert
en la tabla. hago lo siguiente:

Set r_aux = con.OpenResultset("select @@identity")
Res = r_aux(0)

Set r_aux = con.OpenResultset("select SCOPE_IDENTITY()")
Res = r_aux(0)

Set r_aux = con.OpenResultset("select IDENT_CURRENT('tabla')")
Res = r_aux(0)

todos me devuelven el valor correcto, excepto SCOPE_IDENTITY, que es justo
la que quiero consultar, ya que en determinadas ocasiones no coinciden.

Un saludo y gracias
Respuesta Responder a este mensaje
#2 Jesus
14/12/2009 - 13:04 | Informe spam
Parece cosa del VB6, porque desde el "Analizador de consultas" del SQL , me
devuelve todos los valores correctamente
Respuesta Responder a este mensaje
#3 Jesus
14/12/2009 - 14:02 | Informe spam
Gracias Carlos:

Con un procedimiento almacenado si que me devuelve el valor correcto.
Muchas gracias

"Carlos Sacristan" wrote:

En la ayuda viene la explicación de por qué no te funciona:

"SCOPE_IDENTITY y @@IDENTITY devuelven los últimos valores de identidad
generados en una tabla en la sesión actual. No obstante, SCOPE_IDENTITY solo
devuelve los valores insertados en el ámbito actual; @@IDENTITY no se limita
a un ámbito específico."

Tienes que consultar SCOPE_IDENTITY en la misma instrucción donde haces el
insert. Bueno, de hecho lo recomendable sería que te crearas un
procedimiento almacenado que realizar la inserción y tuvieras un parámetro
de salida al que le asignaras el valor de SCOPE_IDENTITY.

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático


"Jesus" wrote in message
news:
> hola a todos:
>
> estoy intentando consultar el ultimo valor autonumerico que he creado de
> en
> ambito actual y la sesion actual y seimrep me devuelve el valor NULL, seim
> embargo @@identity e IDENT_current() me funcionan correctamente.
> Lo consulto desde una aplicación de VB6, justo despues de realizar el
> insert
> en la tabla. hago lo siguiente:
>
> Set r_aux = con.OpenResultset("select @@identity")
> Res = r_aux(0)
>
> Set r_aux = con.OpenResultset("select SCOPE_IDENTITY()")
> Res = r_aux(0)
>
> Set r_aux = con.OpenResultset("select IDENT_CURRENT('tabla')")
> Res = r_aux(0)
>
> todos me devuelven el valor correcto, excepto SCOPE_IDENTITY, que es justo
> la que quiero consultar, ya que en determinadas ocasiones no coinciden.
>
> Un saludo y gracias

.

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