Loki
Loki

Reputation: 11

Oracle: FROM keyword not found where expected error in select statment

I am getting below error in my function.

Error: FROM keyword not found where expected

And here is my Function:

    private int BauteilLieferzeit(string Materianummer)
    {
        try
        {
            OracleCommand cmd = new OracleCommand(
                " Select MATNR, AVG_DAUER" +
                " AVG " +
                    " (DATEDIFF " +
                        " (mi, Z.APL_ANFDATUM, " +
                        " Z.STA_LIEFERDATUM)) " +
                " as AVG_DAUER " +
                " from ZDATA AS Z " +
                " where MATNR = '" + Materianummer + "'" 
                        , OraVerbindung._conn);


            OracleDataReader r = cmd.ExecuteReader();

            if (r.HasRows)
            {
                int Restminuten = OraVerbindung.Lieferzeit;
                while (r.Read())
                {
                    Restminuten = r.GetInt32(1);
                }
                return Restminuten;
            }
            else
            {
                return OraVerbindung.Lieferzeit;
            }
        }
        catch
        {
            return OraVerbindung.Lieferzeit;
        }


    }

Upvotes: 0

Views: 250

Answers (2)

Marmite Bomber
Marmite Bomber

Reputation: 21063

In Oracle this is not a valid syntax

from ZDATA AS Z

use

 from ZDATA Z

instead (remove "AS")

Additionally consider the use of bind variables instead of string concatenation:

 " where MATNR = '" + Materianummer + "'" 
  • search for "SQL Injection".

Upvotes: 1

Utsav
Utsav

Reputation: 8093

Use this. Included the issue highlighted by Marmite also. But the error FROM keyword not found where expected would be due to missing comma in select statement.

Edit: Removed AVG_DAUER column as it is getting derived later.

private int BauteilLieferzeit(string Materianummer)
{
    try
    {
        OracleCommand cmd = new OracleCommand(
            " Select MATNR," +
            " AVG " +
                " (DATEDIFF " +
                    " (mi, Z.APL_ANFDATUM, " +
                    " Z.STA_LIEFERDATUM)) " +
            " as AVG_DAUER " +
            " from ZDATA Z " +
            " where MATNR = '" + Materianummer + "'" 
                    , OraVerbindung._conn);


        OracleDataReader r = cmd.ExecuteReader();

        if (r.HasRows)
        {
            int Restminuten = OraVerbindung.Lieferzeit;
            while (r.Read())
            {
                Restminuten = r.GetInt32(1);
            }
            return Restminuten;
        }
        else
        {
            return OraVerbindung.Lieferzeit;
        }
    }
    catch
    {
        return OraVerbindung.Lieferzeit;
    }


}

Upvotes: 0

Related Questions