'Index out of range on column from inner join condition

I am getting a index out of range error when trying to get a string value from a datareader. The column USER_ROLE which is the only column from a INNER JOIN condition. It was working and for some reason has now started throwing this index out of range error. I've verified the actual stored procedure works via SSMS and the column is being returned.

Below is the code for the stored procedure

ALTER PROCEDURE [dbo].[usp_GetUsersLogonInformation]
(
    -- inactive = 0, active = 1, all = 2
    @active int = 2
)
AS 
BEGIN
    DECLARE @whereClauseNeeded bit = 1
    DECLARE @whereClause nvarchar(100) = concat(' WHERE usr.ACTIVE = ', @active)
    DECLARE @sqlCmd nvarchar(max)= 'SELECT 
        usr.USER_PK,
        usr.PRINCIPAL_ID,
        usr.AA_USER_FK,
        usr.FIRST_NAME,
        usr.LAST_NAME,
        usr.[USER_NAME], 
        usr.EMAIL_ADDRESS, 
        usr.ACTIVE,
        usr.LV_USER_ROLE_FK,
        lvur.USER_ROLE,
        usr.CREATED_BY,
        usr.CREATED_SYSDATE
    FROM dbo.USERS usr
        INNER JOIN dbo.LV_USER_ROLES lvur ON lvur.LV_USER_ROLE_PK = usr.LV_USER_ROLE_FK'
    IF @active = 0 OR @active = 1
    BEGIN
        set @sqlCmd = concat(@sqlCmd, @whereClause)
    END

    EXEC sp_executesql @sqlCmd
END

the c# code retrieving the data

using (SqlConnection dbConn = theVoiceSqlHelpers.GetDbConnection())
{
    using (SqlCommand sqlCmd = new SqlCommand(USP_GET_USER_INFO, dbConn))
    {
        sqlCmd.CommandType = CommandType.StoredProcedure;
        sqlCmd.Parameters.AddWithValue("@whereClause",string.Format("USER_NAME = \'{0}\'", txbxUserName.Text));

        SqlDataReader dr = sqlCmd.ExecuteReader();
        while (dr.Read())
        {
            user = new Tbl_Users();

            user.USER_PK = dr.GetInt32(dr.GetOrdinal("USER_PK"));
            user.PRINCIPAL_ID = dr.GetInt32(dr.GetOrdinal("PRINCIPAL_ID"));
            user.AA_USER_FK = dr.GetInt32(dr.GetOrdinal("AA_USER_FK"));
            user.FIRST_NAME = dr.GetString(dr.GetOrdinal("FIRST_NAME"));
            user.LAST_NAME = dr.GetString(dr.GetOrdinal("LAST_NAME"));
            user.USER_NAME = dr.GetString(dr.GetOrdinal("USER_NAME"));
            user.EMAIL_ADDRESS = dr.GetString(dr.GetOrdinal("EMAIL_ADDRESS"));
            user.ACTIVE = dr.GetBoolean(dr.GetOrdinal("ACTIVE"));
            user.LV_USER_ROLE_FK = dr.GetInt32(dr.GetOrdinal("LV_USER_ROLE_FK"));
            user.USER_ROLE = dr.GetString(dr.GetOrdinal("USER_ROLE"));
            user.CREATED_BY = dr.GetString(dr.GetOrdinal("CREATED_BY"));
            user.CREATED_SYSDATE = dr.GetDateTime(dr.GetOrdinal("CREATED_SYSDATE"));
        }
        dr.Close();
    }
}

I have ensure the column name is correct however I am now stuck at this new found exception.

Image showing exception

Has anyone seen this behavior before. My apologies if I am overlooking and obvious but could use an extra set of eyes on this.

LV_USER_ROLES Table

LV_USER_ROLES

USERS Table

USERS Table



Solution 1:[1]

Charlieface's comment resolved the exception. In this database there is 2 similiar named usp's and I was calling the wrong one.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 GreenBetweenTheBraces