Oracle说缺少,拼写错误或放错了FROM

本文关键字:错误 错了 FROM Oracle | 更新日期: 2023-09-27 18:04:13

我正在测试我与Oracle的第一次连接。联系本身似乎是有效的。然而…

SELECT TOP 1 ID FROM my_core.my_table

是我用的句子

retVal = cmd1.ExecuteScalar().ToString();

ORA-00923: FROM关键字未找到

   in Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode,
OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src
, String procedure, Boolean bCheck)
   in Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, Oracle
Connection conn, String procedure, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx
, Object src, Boolean bCheck)
   in Oracle.DataAccess.Client.OracleCommand.ExecuteReader(Boolean requery, Bool
ean fillRequest, CommandBehavior behavior)
   in Oracle.DataAccess.Client.OracleCommand.ExecuteReader()
   in Oracle.DataAccess.Client.OracleCommand.ExecuteScalar()
   in thiscs.Main() en C:'app'testuser'product'11.2.0'my'sample'thiscs.cs:line 44

代码如下:

// C#
using System;
using Oracle.DataAccess.Client;
using System.Data;
using System.Data.Common;
using System.Transactions;
class thiscs
{
  static void Main()
  {
    string retVal = string.Empty;
    string providerName = "Oracle.DataAccess.Client";
    #region constr
    string constr =
       @"User Id=mytestuser;Password=mytestpass;Data Source=10.210.10.81:1521/my.svc.net;";
    #endregion
    // Get the provider factory.
    DbProviderFactory factory = DbProviderFactories.GetFactory(providerName);
    try
    {
      // Open a connection to the DB.
      DbConnection conn1 = factory.CreateConnection();
      conn1.ConnectionString = constr;
      conn1.Open();
      // Create a command to execute the sql statement.
      DbCommand cmd1 = factory.CreateCommand();
      cmd1.Connection = conn1;
      cmd1.CommandText = @"SELECT TOP 1 ID FROM my_core.my_table";
      
      // Execute the SQL statement to Select one rowfield in DB.
      retVal = cmd1.ExecuteScalar().ToString();
      Console.WriteLine("Field to be showed by cmd1: {0}", retVal);
      // close and dispose the connection
      conn1.Close();
      conn1.Dispose();
      cmd1.Dispose();
    }
    catch (Exception ex)
    {
      Console.WriteLine(ex.Message);
      Console.WriteLine(ex.StackTrace);
    }
  }
}

I tried also

SELECT TOP 1 [ID] FROM my_core.my_table

SELECT 'hey apple, apple, hey'

ORA-00923: FROM keyword not found where expected

任何想法?蒂娅!

Oracle说缺少,拼写错误或放错了FROM

TOP在Oracle词汇表中不是关键字,至少在您希望它成为关键字的上下文中不是。

TOP是Microsoft SQL Server使用的语法。要复制这一点,请将SQL重写为:

SELECT ID FROM my_core.my_table WHERE rownum <= 1

换句话说,transform:

this: SELECT TOP N .... WHERE ...
                 |
                 +------------------------------+
                                                v
to:   SELECT       .... WHERE ... AND rownum <= N

  • Oracle/PLSQL:从查询中检索Top N记录

还有注意,在您的示例中显示的查询是相当无意义的。给定时间,索引使用情况、表组织等都会发生变化,这意味着除非您指定顺序,否则您将检索的特定ID可能会发生变化。