C# Oracle内部联接不起作用,但笛卡尔联接起作用
我犯了一个很奇怪的错误。 如果我使用内部联接编写查询,如下所示:C# Oracle内部联接不起作用,但笛卡尔联接起作用,c#,oracle,inner-join,C#,Oracle,Inner Join,我犯了一个很奇怪的错误。 如果我使用内部联接编写查询,如下所示: String query = @"SELECT * FROM BKING CCVB INNER JOIN SEM S ON CCVB.BKING_REQ_DTM BETWEEN S.ST_D AND S.END_D"; OracleCommand dbCommand = new OracleCommand(query, Connecti
String query = @"SELECT *
FROM BKING CCVB
INNER JOIN SEM S ON CCVB.BKING_REQ_DTM BETWEEN S.ST_D AND S.END_D";
OracleCommand dbCommand = new OracleCommand(query, Connection);
OracleDataAdapter adapter = new OracleDataAdapter(dbCommand);
OracleCommandBuilder builder = new OracleCommandBuilder(adapter);
DataTable dt = new DataTable();
adapter.Fill(dt);
return dt;
查询失败,并显示以下错误消息:
{Oracle.ManagedDataAccess.Client.OracleException(0x80004005):ORA-00942:表或视图不存在
但当我改为笛卡尔连接时,它是好的:
String query = @"SELECT *
FROM BKING CCVB, SEM S
WHERE CCVB.BKING_REQ_DTM BETWEEN S.ST_D AND S.END_D";
OracleCommand dbCommand = new OracleCommand(query, Connection);
OracleDataAdapter adapter = new OracleDataAdapter(dbCommand);
OracleCommandBuilder builder = new OracleCommandBuilder(adapter);
DataTable dt = new DataTable();
adapter.Fill(dt);
return dt;
有什么特别的原因导致它失败吗?以及如何解决?您确定这个问题是可重复的吗?我的意思是,您看到的错误消息非常平淡,甚至没有提到实际的表/视图名称。这是我收到的错误消息,没有表名。Oracle错误消息就是这样,调试起来非常痛苦。当您运行时直接针对Oracle的内部联接查询,会发生什么?它可以显示结果表。奇怪的是,当我尝试在程序中执行
SELECT*FROM ALL_TAB_PRIVS
时,我可以得到两个表名。它确实存在,但不知怎的,如果我使用内部联接
语法,它就不起作用了。你使用的是真正旧的Oracl吗你的C#代码中有e适配器吗?那将是我要检查的下一件事。