У меня есть представление с именем EMP_DETAILS
, которое выглядит как
CREATE OR REPLACE FORCE VIEW "ABC"."EMP_DETAILS" ("NAME", "COUNTRY") AS
SELECT
b.NAME,c.COUNTRY
FROM
ABC.Emp a ,ABC.Emp_Bom b ,ABC.Emp_info c
where a.E_ID=b.ID and a.R_ID=c.NR order by 1 asc;
Я просто wi sh извлекаю строку из этого представления, и запрос для этого же выглядит как
Select * from EMP_DETAILS where NAME = 'xxx' and COUNTRY = 'xxx'; //Query works fine in Oracle SQL Developer
C# код для выполнения этого запроса выглядит как
DataSet ds = null;
OracleDataAdapter adapter = null;
StringBuilder builder = new StringBuilder();
builder.Append("SELECT * from EMP_DETAILS where NAME = :xx and COUNTRY = :xxx");
command = new OracleCommand(builder.ToString());
command.Parameters.Add("xx", name);
command.Parameters.Add("xxx", country);
string tablename = "EMP_DETAILS";
using (OracleConnection oc = new OracleConnection(CONNECTIONSTRING))
{
try
{
adapter = new OracleDataAdapter();
command.CommandType = CommandType.Text;
command.Connection = oc;
adapter.SelectCommand = command;
ds = new DataSet();
adapter.Fill(ds, tablename); //Code breaks here msg says **No table or view found**
}
catch(Exception ex)
{
if (ds != null)
{
ds.Dispose();
ds = null;
}
}
finally
{
if (oc != null)
{
oc.Close();
oc.Dispose();
}
}
}
Обнаружено, что эта ошибка обычно возникает, если вы пытались выполнить оператор SQL, который ссылается на таблицу или представление, которое либо не существует, к которому у вас нет доступа, либо принадлежит к другой схеме, и вы не указали в таблице имя схемы.
Я проверил все эти условия, но все еще не мог не решить проблему. Дайте мне знать, где я ошибаюсь.
Этот вопрос мне не помогает, поэтому не помечайте его как дубликат.
Обновление: Я пытался объединить view query
с моим Select query
, и это работает! Запрос выглядит как
select* from
(SELECT b.NAME, c.COUNTRY FROM
ABC.Emp a ,ABC.Emp_Bom b ,ABC.Emp_info c
where a.E_ID=b.ID and a.R_ID=c.NR order by 1 asc)
where NAME LIKE :xx and AREA LIKE :xxx
Дайте мне знать, почему он не работает, когда я создаю представление, а затем пытаюсь извлечь данные из представления.