OracleDataReader objReader = cmd.ExecuteReader();
while(cmdReader.Read()) nRegisters++; objReader = cmd.ExecuteReader();
Вы должны повторно инициализировать этот objReader, потому что этот «указатель» остается в последней позиции, когда вы хотите прочитать его снова ... и нет возможности вернуться к первой позиции курсора.
если вам нужен номер регистра, который вы получите, вы должны ввести COUNT (*) в выборку вместо подсчета каждой строки, вы должны быть практичными в отношении своего кода:
например, если вам нужны номера граждан определенного города:
BEGIN
OPEN REF_CUR FOR
SELECT COUNT(*) AS nRegisters,
City AS Var1,
Country AS Var2
FROM Citizens
WHERE City = 'City';
RETURN;
END;