ORA-01008 с параметром, использованным дважды в запросе

Когда я пытаюсь выполнить запрос с параметром, который используется дважды, я получаю ORA-01008 "Не все переменные связаны". Однако, если я помещаю код с этими параметрами в конец запроса - он работает нормально.

Простая программа для воспроизведения ошибки

internal static class Program {
    private static void Main() {
        //this query does not work
        ExecuteSql(@"select
        category1_.ID as ID0_,
        category1_.ValidUntil as ValidUntil0_ 
    from
        Invoice invoice0_,
        Category category1_ 
    where
        ( invoice0_.Foo<:p0 or invoice0_.Foo>:p0 ) 
        and category1_.ValidUntil=:p1");

        //this works
        ExecuteSql(@"select
        category1_.ID as ID0_,
        category1_.ValidUntil as ValidUntil0_ 
    from
        Invoice invoice0_,
        Category category1_ 
    where
        category1_.ValidUntil=:p1 
        and ( invoice0_.Foo<:p0 or invoice0_.Foo>:p0)");
    }

    private static void ExecuteSql(string commandText) {
        Console.WriteLine("------");
        try {
            var cs = "User ID=nhibernate;Password=nhibernate;Data Source=192.168.0.101:1521";
            using (var connection = new OracleConnection(cs))
            using (var cmd = connection.CreateCommand()) {
                cmd.BindByName = true; // I want to bind parameters by name
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = commandText;
                cmd.Parameters.Add(":p0", OracleDbType.Int32, 42, ParameterDirection.Input);
                cmd.Parameters.Add(":p1", OracleDbType.TimeStamp, DateTime.Now, ParameterDirection.Input);

                connection.Open();
                cmd.ExecuteReader();
            }
        }
        catch (Exception e) { Console.WriteLine(e); }
    }
}

Я использую полностью управляемый ODP.NET

БД - Oracle XE 11g Release2

0 ответов

Другие вопросы по тегам