• Shane you're right.
    What I need to do is check @hierarchyflag for each row (for each profile) and for some reason I keep getting the @hierarchyflag value of the first returned row. I'm setting the value of @hierarchyflag inside the while, so it should be different each time, since I get it from the @profileName. In my understanding, if @hierarchyflag for Profile 1 is 1 and @hierarchyflag for Profile 2 is 2, shouldn't this print out 
    'aaa'
    'bbb'
    Why am I getting
    'aaa'
    'aaa'?


    DECLARE @profileName nvarchar(200);
    DECLARE @hierarchyFlag tinyint;
    DECLARE @db_cursor CURSOR;
    DECLARE @ProfileNameTable TABLE (ProfileName nvarchar(100));
    INSERT INTO @ProfileNameTable (ProfileName) VALUES ('Profile 1'), ('Profile 2');

    SET @db_cursor = CURSOR FOR
    SELECT ProfileName FROM @ProfileNameTable

    OPEN @db_cursor;
    FETCH NEXT FROM @db_cursor INTO @profileName;

    WHILE @@FETCH_STATUS = 0
    BEGIN

    SET @hierarchyFlag = (SELECT TOP 1 HierarchyFlag FROM [dbo].[vSB_IdM_Hibis_Profile] WHERE ltrim(rtrim(HibisProfileName)) = @profileName);

     IF (@hierarchyFlag = 1)
            BEGIN
            PRINT 'aaa'
            END
     ELSE IF (@hierarchyFlag = 2)
            BEGIN
            PRINT 'bbb'
            END
     FETCH NEXT FROM @db_cursor INTO @profileName
    END
    CLOSE @db_cursor;
    DEALLOCATE @db_cursor;