Ссылка БД в проблеме параметров Oracle - PullRequest
3 голосов
/ 15 августа 2011

У меня есть этот запрос Oracle, который ссылается на другую базу данных, но, похоже, он не принимает мои параметры, которые я передаю в запрос

Вот мой код

cmd.CommandText = "SELECT * FROM table1@dev tb1 join table2 tb2 on tb1.id = tb2.id WHERE tb1.id = :id"

cmd.CommandType = CommandType.Text

cmd.BindByName = True

cmd.Parameters.Add(New OracleParameter("id", id))

Iполучить эту ошибку, когда сделать это

ORA-03113: конец файла на канале связи

Но если я просто изменил запрос, чтобы не использовать параметры, то онработает

Любые идеи о том, как я могу получить это, работая с параметрами?

РЕДАКТИРОВАТЬ

На дальнейшее расследование, если я попробую следующее

cmd.CommandText = "SELECT * FROM table1@dev tb1 WHERE tb1.id = :id"

cmd.CommandType = CommandType.Text

cmd.BindByName = True

cmd.Parameters.Add(New OracleParameter("id", id))

Я получаю другую ошибку

ORA-28511: потеря соединения RPC с гетерогенным удаленным агентом

Мне бы очень хотелось решение, которое позволяет параметрам бытьперешли к связанной базе данных, но я не могу найти ничего об использовании параметров со связанной базой данных

Спасибо

Ответы [ 3 ]

4 голосов
/ 10 сентября 2011

ORA-03113 - это общее исключение, которое возникает, когда что-то катастрофическое вызывает разрыв соединения. В журнале предупреждений или в файле трассировки может содержаться дополнительная информация. Проверьте фоновый дамп или каталог диагностики.

ORA-28511 более конкретно. Сообщение об ошибке указывает на конкретную область для расследования; совет «Проверьте наличие проблем с сетью и сбоев удаленного хоста. Возможно, проблема в программном обеспечении агента».

Итак, это не проблема синтаксиса. Это проблема среды (конфигурации / оборудования). Боюсь, вам придется еще немного покопаться.

Удачи.

3 голосов
/ 15 августа 2011

вы пытались указать тип параметра?:

OracleParameter p1 = new OracleParameter("id",OracleDbType.Decimal); 
p1.Value=id; 
cmd.Parameters.Add(p1); 
0 голосов
/ 15 августа 2011

Лично, весь этот драйвер Oracle / вопрос действительно заставил меня сойти с ума; например Я испытал, что некоторые SELECT * генерировали DivideByZeroException, в то время как замена * действительно необходимыми именами столбцов работала как шарм.

Возможно, , что у вас есть похожая проблема здесь.

Что помогло мне решить эти проблемы, так это правильно выбрать драйверы ODP.NET; у нас здесь есть производственная система с бета-драйверами, так как они были единственными, которые работали при любых обстоятельствах в нашем проекте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...