Ниже приведена функция, которую я имею в VB, которая будет запускать сохраненный pro c. Сохраненный pro c имеет 2 выходных параметра. Один называется @Success
, а другой - @Message
.
Я пытаюсь установить параметры успеха и сообщения в значения соответствующих выходных параметров из сохраненного параметра c. Я не знаю много о VB. NET. Как я могу добиться этого, основываясь на функции, которую я сейчас написал?
Public Function InvalidateCertificate(ByVal context As DbContextBase,
ByVal certificateId As System.String,
ByRef success As System.Boolean,
ByRef message As System.String) As Int32
Dim successParameter As New SqlParameter("@Success", success) With {.Direction = ParameterDirection.InputOutput, .Value = success}
Dim messageParameter As New SqlParameter("@Message", message) With {.Direction = ParameterDirection.InputOutput, .Value = message}
Dim parameters() As SqlParameter = {New SqlParameter("@CertificationValue", certificateId), successParameter, messageParameter}
Dim results As Int32 = context.ExecuteProcedure("Orders.spInvalidateCertificate", parameters)
success = DirectCast(successParameter.Value, System.Boolean)
message = DirectCast(messageParameter.Value, System.String)
Return 0
End Function
Stored pro c:
ALTER PROCEDURE [Orders].[spInvalidateCertificate]
-- Add the parameters for the stored procedure here
@CertificationValue VARCHAR(20),
@Success BIT OUTPUT,
@Message VARCHAR(50) OUTPUT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Log the call to this procedure
EXEC [Logs].[spLogStoredProcedureCall] @@PROCID;
--Check to see if CertificationValue exists or is invalid
IF(select CertificationValue from
[Certificate].CertificateOrderDetailImageXref where CertificationValue =
@CertificationValue) is null
BEGIN
SET @Success = 0
SET @Message = 'Certification does not exist or is already
invalidated.'
END
ELSE
BEGIN
-- Insert statements for procedure here
UPDATE Certificate.CertificateOrderDetailImageXref
SET CertificationValue = CONCAT(@CertificationValue,'-VOID')
WHERE CertificationValue = @CertificationValue
SET @Success = 1
SET @Message = 'Success, certification has been invalidated.'
END;
END
GO
Заметьте, что на самом деле происходит только то, что только первый письмо из сообщения возвращается. так что если это успех, и вывод sql должен быть "успех!" Я просто получаю "S". Если сертификации не существует, я просто получаю «C».