aquí está mi procedimiento almacenado. cuando lo pruebo, siempre obtengo el resultado correcto.Usando Dapper.net para llamar al procedimiento almacenado, siempre devuelve -1 de vuelta
ALTER PROCEDURE [dbo].[AddSmoothieIngredients]
-- Add the parameters for the stored procedure here
@Query NVARCHAR(4000) ,
@SmoothieId INT ,
@CreatedDate DATETIME ,
@Status INT ,
@UserId INT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
BEGIN TRY
BEGIN TRAN
IF @SmoothieId > 0
BEGIN
DELETE FROM dbo.SmoothieIngredients
WHERE SmoothieId = @SmoothieId;
EXECUTE (@Query);
END
ELSE
BEGIN
IF @UserId = 0
SET @UserId = NULL;
INSERT INTO dbo.Smoothie
(Name, CreatedDate, Status, UserId)
VALUES (N'', @CreatedDate, @Status, @UserId);
SET @SmoothieId = SCOPE_IDENTITY();
SET @Query = REPLACE(@Query, 'sId', @SmoothieId);
EXECUTE (@Query);
END
COMMIT TRAN
RETURN @SmoothieId
END TRY
BEGIN CATCH
ROLLBACK
END CATCH
END
Sin embargo, cuando llamo a este procedimiento almacenado con dapper.net, siempre devuelve -1 de nuevo.
using (var conn = OpenConnection())
{
var parameter = new { Query = query, SmoothieId = smoothieId, CreatedDate = createdDate, Status = status, UserId = userId };
return conn.Execute("AddSmoothieIngredients", parameter, commandType: CommandType.StoredProcedure);
}
Probablemente, dapper.net no puede recoger el valor de retorno del procedimiento almacenado. pero realmente no sé cómo arreglarlo. por favor ayuda.
gracias. pero todavía tiene que usar execute, encontré otra muestra en línea y funciona. – qinking126