Store procedure no devuelve valor en parametros

04/10/2003 - 08:22 por Fernando | Informe spam
Hola grupo, tengo un store proc. que quiero que me devuelva el ID de un
cliente nuevo (en la tabla con la propiedad identity true) Inserta el
registro perfectamente pero solo me devuelve el numero de registros
afectados a la operacion (1) y no el ID correspondiente

CREATE PROCEDURE [InsertDatosClientes]
(@Dir [nvarchar] (30) = NULL,
@Cliente [nvarchar] (35) = NULL
)
AS
BEGIN TRANSACTION
INSERT [Musica].[dbo].[Cliente]
([RazonSocNom],
[Dir]
)
VALUES
(@Cliente,
@Dir
)
IF @@error <> 0
BEGIN
ROLLBACK TRAN
RETURN
END
COMMIT TRANSACTION
RETURN(@@identity)
GO


Lo llamo desde VB6 de esta manera en donde vec es array de tipo variant que
contiene los 2 elementos a insertar y en a recibo 1 (numeros de registros
afectados)

With Adocmd
.ActiveConnection = cnConexion
.CommandType = adCmdStoredProc
.CommandText = "InsertDatosClientes"
End With

Adocmd.Execute a, vec

Saludos,
Fernando
 

Leer las respuestas

#1 Mauricio Sthandier R.
05/10/2003 - 08:59 | Informe spam
Estás llamando mal al procedimiento, en tu ejecución 'Adocmd.Execute a, vec'
vec tomará el valor de filas afectadas, el segundo parámetro el cual en tu
caso es 1 inserción. Tienes que crear un parámetro de retorno para recibir
tu @@IDENTITY. Si no sabes como hacerlo te sugiero visitar el newsgroup de
ADO o la documentación correspondiente.

Si acaso esto no resolviese tu problema intenta guardar el valor de
@@IDENTITY inmediatamente después de efectuado el INSERT. Eventualmente
podrías necesitar usar SCOPE_IDENTITY o IDENT_CURRENT.

"Fernando" escribió en el mensaje
news:%23Kgh1%
Lo llamo desde VB6 de esta manera en donde vec es array de tipo variant que
contiene los 2 elementos a insertar y en a recibo 1 (numeros de registros
afectados)

With Adocmd
.ActiveConnection = cnConexion
.CommandType = adCmdStoredProc
.CommandText = "InsertDatosClientes"
End With

Adocmd.Execute a, vec

Preguntas similares