I have the following Stored Procedure that basically Inserts a record based on the PK (3 parameter fields make up the PK). If the record already exists, it will Error out but continue on selecting the record that already exists and returns a single value (rowID).
In my VB.Net code I need to return the rowID and I'm not sure how to do this. Here is the VB Code:Code:set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go ALTER PROCEDURE [dbo].[prcInsertBatchHeader] ( @terminalNumber varchar(80), @supplier varchar(60), @batchDateTime varchar(22) ) AS SET NOCOUNT ON DECLARE @NewRowID bigint INSERT INTO tblBatchHeader ( terminalNumber, supplier, batchDateTime ) VALUES ( @terminalNumber, @supplier, @batchDateTime ) SELECT rowID FROM tblBatchHeader WHERE (terminalNumber = @terminalNumber) AND (supplier = @supplier) AND (batchDateTime = @batchDateTime)
Thanks,Code:Private Sub WriteHeaderRecord(ByVal strTerminal As String, _ ByVal strSupplier As String, _ ByVal strBatchDateTime As String) Try Dim cmdSelect As New SqlCommand("prcInsertBatchHeader", cn) cmdSelect.CommandType = CommandType.StoredProcedure cmdSelect.Transaction = trans cmdSelect.Parameters.Add(New SqlParameter("@terminalNumber", SqlDbType.VarChar, 80)) cmdSelect.Parameters.Add(New SqlParameter("@supplier", SqlDbType.VarChar, 60)) cmdSelect.Parameters.Add(New SqlParameter("@batchDateTime", SqlDbType.VarChar, 22)) cmdSelect.Parameters.Add(New SqlParameter("@retVal", SqlDbType.Int, 0)) cmdSelect.Parameters("@retVal").Direction = ParameterDirection.ReturnValue cmdSelect.Parameters("@terminalNumber").Value = strTerminal cmdSelect.Parameters("@supplier").Value = strSupplier cmdSelect.Parameters("@batchDateTime").Value = strBatchDateTime cmdSelect.ExecuteNonQuery() I need to get the value of the rowID here!!! Catch ex As Exception strProcedure = "WriteHeaderRecord()" msg = ex.Message WriteToErrorFile(msg, strFileName, strProcedure) End Try End Sub




Reply With Quote