buenas a todos, una consulta stoy haciendo un mantenimiento y quiero insertar un nuevo registro y q me aparesca el numero consecutivo, para esto hice un procedimiento en Sql (con varios type y uno de ellos es un select)y al parecer en Sql Funciona, pero al pasar el parametro de retorno al VB.net es te me retorna 0 y no el numero (habiendo + de 10 filas ya ingresadas)
mi codigo en VB.net es algo asi (esta en una clase)
Public Function AREAS_CORRELATIVO() As Int32
Dim objcn As New SqlConnection("server=.;database=una;uid=sa")
Dim objcmd As New SqlCommand
objcmd.Connection = objcn
objcmd.CommandText = "XXX_AREAS"
objcmd.CommandType = CommandType.StoredProcedure
Dim objpar1 As New SqlParameter("@TYPE", SqlDbType.SmallInt)
objpar1.Value = 5
objcmd.Parameters.Add(objpar1)
.
.
.
Dim objpar7 As New SqlParameter("@SALIDA_Correlativo", SqlDbType.Int)
objpar7.Direction = ParameterDirection.Output
objpar7.Value = 0
objcmd.Parameters.Add(objpar7)
objcn.Open()
AREAS_TRABAJO_INFOP_CORRELATIVO = objcmd.Parameters("@SALIDA_Correlativo").Value
End Function
la tabla AREA el campo codigo es int
mi codigo en SQL es asi (tiene type = 1 "insert", type = 2 "delete", etc):
CREATE PROCEDURE XXX_AREAS
(@TYPE smallint,
@CoAr INT, --- SOLO FUNCIONA PARA UPDATE, ELIMINAR, BUSQUEDA
@DeAr VARCHAR(25),
@SALIDA_Correlativo int output)
AS
DECLARE @CORRELATIVO INT
BEGIN
-------- INSERTAR
IF @TYPE = 1
BEGIN
INSERT INTO AREA (DeAr) VALUES(@DeAr)
END
.
.
.
------- NUMERO CORRELATIVO
IF @TYPE = 5
BEGIN
SELECT @CORRELATIVO=COUNT(*) FROM AREA
SET @SALIDA_Correlativo = @CORRELATIVO + 1
END
END
GO
y al probarlo en SQL sale
DECLARE @SALIDA_RPARETRA INT
exec XXX_AREAS_DE_TRABAJO_RPARETRA 5, '0', 'Almacen', @SALIDA_Correlativo OUTPUT
PRINT @SALIDA_Correlativo
---------------------------------------------------------------------------
15
no entiendo x q no me devuelve el valor, si alguien me pudiera ayudar me seria de mucha ayuda, de ante mano muchas gracias