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).


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)
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:
    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
Thanks,