ORA-01008 со всеми связанными переменными

Я использую System.Data.OracleClient , который выполняет привязку параметров по имени и проверяет, что CommandText и параметры синхронизированы:

    public string CommandText { get; set; }
    public IEnumerable<OracleParameter> Parameters { get; set; }

    private void VerifyThatAllParametersAreBound()
    {
        var variableNames = Regex.Matches(CommandText, ":\\w+")
            .Cast<Match>().Select(m => m.Value).ToArray();
        var parameteterNames = Parameters.Select(p => p.ParameterName).ToArray();

        var unboundVariables = variableNames.Except(parameteterNames).ToArray();
        if (unboundVariables.Length > 0)
        {
            throw new Exception("Variable in CommandText missing parameter: "
                + string.Join(", ", unboundVariables) + ".");
        }

        var unboundParameters = parameteterNames.Except(variableNames).ToArray();
        if (unboundParameters.Length > 0)
        {
            throw new Exception("Parameter that is not used in CommandText: "
                + string.Join(", ", unboundParameters) + ".");
        }
    }

Еще один запрос выдает ORA-01008: не все переменные связаны . При ручной вставке значений параметров в вызывающий ошибку CommandText запрос выполняется, поэтому значения CommandText и Parameters должны быть в порядке. Я использую: в качестве префикса как для переменных, так и для имен параметров, и он работает для других запросов.

Как я могу определить причину этого исключения?

7
задан Alex 15 April 2011 в 16:06
поделиться