Estou tentando executar uma storedProcedure, quando todos os campos têm valor, os dados são inseridos sem problema, porem se alguns campos quando nulos, os parâmetros não são criados e aparece a mensagem:
Minha Procedure:
ALTER PROCEDURE [dbo].[sp_InsereAcordo] ( @idUnidade int, @dataAcordo datetime, @valorParcelado float, @valorAdvogado float=NULL, @quantidadeParcelas int, @valorDaParcela float, @vencPrimeiraParcela datetime, @diaVencDemaisParcelas nchar(2), @acordoJudicial bit, @numeroProcesso nvarchar(8)= NULL, @digitoNumeroProcesso nchar(2)= NULL, @anoNumeroProcesso nchar(4)= NULL, @orgaoJudiciario nchar(1)= NULL, @tribunal nchar(2)= NULL, @comarca nchar(4)= NULL, @id_Advogado int= NULL, @observacoes nvarchar(4000)= NULL, @id_AcordoFinanceiro int OUT ) AS BEGIN INSERT INTO AcordoFinanceiro (idUnidade, dataAcordo, valorParcelado, valorAdvogado, quantidadeParcelas, valorDaParcela, vencPrimeiraParcela, diaVencDemaisParcelas, acordoJudicial, numeroProcesso, digitoNumeroProcesso, anoNumeroProcesso, orgaoJudiciario, tribunal, comarca, id_Advogado, observacoes) VALUES (@idUnidade,@dataAcordo,@valorParcelado,@valorAdvogado,@quantidadeParcelas,@valorDaParcela,@vencPrimeiraParcela,@diaVencDemaisParcelas,@acordoJudicial,@numeroProcesso, @digitoNumeroProcesso,@anoNumeroProcesso,@orgaoJudiciario,@tribunal,@comarca,@id_Advogado,@observacoes) SET @id_AcordoFinanceiro = SCOPE_IDENTITY() END
Função:
Public Function insereAcordo(strConexao As String, strAcordo As String) As Integer Dim conn As New SqlConnection Dim strVAL() As String Dim cmd As New SqlCommand Dim idAC As Long Dim trans As SqlTransaction conn.ConnectionString = strConexao conn.Open() trans = conn.BeginTransaction strVAL = Split(strAcordo, ";") Try With cmd .CommandType = CommandType.StoredProcedure .CommandText = "sp_InsereAcordo" .Connection = conn .Transaction = trans .Parameters.Add(New SqlParameter("@idUnidade", SqlDbType.Int)).Value = strVAL(0) .Parameters.Add(New SqlParameter("@dataAcordo", SqlDbType.DateTime)).Value = strVAL(1) .Parameters.Add(New SqlParameter("@valorParcelado", SqlDbType.Float)).Value = strVAL(2) .Parameters.Add(New SqlParameter("@quantidadeParcelas", SqlDbType.Int)).Value = strVAL(4) .Parameters.Add(New SqlParameter("@valorDaParcela", SqlDbType.Float)).Value = strVAL(5) .Parameters.Add(New SqlParameter("@vencPrimeiraParcela", SqlDbType.DateTime)).Value = strVAL(6) .Parameters.Add(New SqlParameter("@diaVencDemaisParcelas", SqlDbType.NChar)).Value = strVAL(7) .Parameters.Add(New SqlParameter("@acordoJudicial", SqlDbType.Bit)).Value = IIf(strVAL(8) = "0", 0, 1) If strVAL(8) = "1" Then .Parameters.Add(New SqlParameter("@numeroProcesso", SqlDbType.NVarChar)).Value = strVAL(9) .Parameters.Add(New SqlParameter("@digitoNumeroProcesso", SqlDbType.NChar)).Value = strVAL(10) .Parameters.Add(New SqlParameter("@anoNumeroProcesso", SqlDbType.NChar)).Value = strVAL(11) .Parameters.Add(New SqlParameter("@orgaoJudiciario", SqlDbType.NChar)).Value = strVAL(12) .Parameters.Add(New SqlParameter("@tribunal", SqlDbType.NChar)).Value = strVAL(13) .Parameters.Add(New SqlParameter("@comarca", SqlDbType.NChar)).Value = strVAL(14) .Parameters.Add(New SqlParameter("@id_Advogado", SqlDbType.BigInt)).Value = strVAL(15) .Parameters.Add(New SqlParameter("@valorAdvogado", SqlDbType.Float)).Value = strVAL(3) End If If Len(strVAL(16)) > 0 Then .Parameters.Add(New SqlParameter("@observacoes", SqlDbType.NVarChar)).Value = strVAL(16) End If .Parameters.Add(New SqlParameter("@id_AcordoFinanceiro", SqlDbType.Int)) .Parameters("@id_AcordoFinanceiro").Direction = ParameterDirection.Output .ExecuteNonQuery() End With idAC = cmd.Parameters("@id_AcordoFinanceiro").Value
Sergio Ivanenko