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适配器吗?那将是我要检查的下一件事。