Porque o execute scalar retorna null?
Eu tentei já usar @@identity , scope_identity e mesmo assim retorna null.
Existe uma solução ? obrigado
Segue código:
Dim command As New SqlCommand()
command.Connection = connection
command.Connection.Open()
Dim sbInsert As New StringBuilder()
Try
Dim sequence As Integer = 0
For Each SelectedPayment As SelectedPayment In selectedPayments
sequence += 1
command = New SqlCommand("spInsertSelectedPayment", connection)
command.CommandType = CommandType.StoredProcedure
If SelectedPayment.IdReceipt <= 0 Then
command.Parameters.AddWithValue("@IdReceipt", SelectedPayment.IdReceipt)
Else
command.Parameters.AddWithValue("@IdReceipt", -1)
End If
command.Parameters.AddWithValue("@IdPaymentMethod", SelectedPayment.IdPaymentMethod)
command.Parameters.AddWithValue("@virtualPartnerIdReceipt", SelectedPayment.VirtualPartnerIdReceipt)
command.Parameters.AddWithValue("@Parcels", SelectedPayment.Parcels)
command.Parameters.AddWithValue("@Value", SelectedPayment.Value)
If (SelectedPayment.BilletDate = Date.MinValue) Then
command.Parameters.AddWithValue("@billetDate", DBNull.Value)
Else
command.Parameters.AddWithValue("@billetDate", SelectedPayment.BilletDate)
End If
' Verifica qual o meio de pagamento selecionado para que o Status inicial apropriado seja atribuído.
Select Case SelectedPayment.IdPaymentMethod
Case 5109
SelectedPayment.Status = 501
command.Parameters.AddWithValue("@Status", SelectedPayment.Status)
Case 5010
SelectedPayment.Status = 109
command.Parameters.AddWithValue("@Status", SelectedPayment.Status)
Case 5007
SelectedPayment.Status = 103
command.Parameters.AddWithValue("@Status", SelectedPayment.Status)
End Select
SelectedPayment.Sequence = sequence
command.Parameters.AddWithValue("@Sequence", SelectedPayment.Sequence)
command.Parameters.AddWithValue("@IdSelectedPayment", idSelectedPayment)
idSelectedPayment = command.ExecuteScalar()
---> idSelectedPayment = nothing...
Proc:
ALTER PROCEDURE [dbo].[spInsertSelectedPayment]
(
@IdReceipt INT ,
@IdPaymentMethod VARCHAR(50),
@virtualPartnerIdReceipt VARCHAR(10),
@Parcels INT,
@Value INT,
@billetDate DATETIME =NULL,
@Status INT,
@Sequence INTEGER,
@IdSelectedPayment INT output
)
AS
SET QUOTED_IDENTIFIER OFF
BEGIN
DECLARE @ErrorValue INT
SET @ErrorValue = 1
-----------------------------------------------------------------
INSERT INTO tbReceiptSelectedPayments (IdReceipt,IdPaymentMethod,Sequence,Parcels,Value,Status,VirtualPartnerIdReceipt,BilletDate)
VALUES(@IdReceipt,@IdPaymentMethod,@Sequence,@Parcels,@Value,@Status,@virtualPartnerIdReceipt,@billetDate)
SELECT @IdSelectedPayment = SCOPE_IDENTITY()
RETURN @ErrorValue
IF @@ERROR != 0 GOTO ERROS
-----------------------------------------------------------------
--COMMIT TRANSACTION
--RETURN
ERROS:
--ROLLBACK TRANSACTION
--RETURN
END
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON