2017-03-21 23 views
0

この00923のエラーはStackOverflowで発生しましたが、私自身の質問を投稿している回答を見つけることができません。ORA-00923:FROMキーワードが必要な場所に見つかりません - SQLDeveloper

私はSQL Developerで作業し、以下のコマンドを実行しようとしています:

SELECT *,(
CASE dayOfWeek 
    WHEN 1 THEN "Monday" 
    WHEN 2 THEN "Tuesday" 
    WHEN 3 THEN "Wednesday" 
    WHEN 4 THEN "Thursday" 
    WHEN 5 THEN "Friday" 
    WHEN 6 THEN "Saturday" 
    WHEN 7 THEN "Sunday" 
END) AS "dayOfWeek" 
FROM Schedules WHERE routeID = 1; 

私は、データベース内のそれぞれ1から7までの整数として、曜日を持っています。上記のように1から7をTextとして表示するためにこのCASEを使用しようとしていますが、このエラーを受け取りました。以下は全額

エラー:

ORA-00923: FROM keyword not found where expected 
00923. 00000 - "FROM keyword not found where expected" 
*Cause:  
*Action: 
Error at Line: 1 Column: 9 
+0

エイリアスが見つかりませんでした。 'select alias。*、(case ....)from alias .... ' –

答えて

1

ちょうどより多くのあなたのSELECT句内*を使用して*あなたがレコードをたいたからテーブル名で*を修飾する必要があります。 Visual Studioの内部

SELECT Schedules.*, 
CASE dayOfWeek 
    WHEN 1 THEN 'Monday' 
    WHEN 2 THEN 'Tuesday' 
    WHEN 3 THEN 'Wednesday' 
    WHEN 4 THEN 'Thursday' 
    WHEN 5 THEN 'Friday' 
    WHEN 6 THEN 'Saturday' 
    WHEN 7 THEN 'Sunday' 
END AS "dayOfWeek" 

FROM Schedules WHERE routeID = 1; 
+0

ORA-00904:"日曜日 ":無効な識別子 00904. 00000 - "%s:無効な識別子 " *原因: *処置: 行のエラー:9列:17 このエラーが発生しています。 – SavageSpud

+0

ああ、日付の名前を一重引用符で囲む必要があります。編集された回答をご覧ください。 – bernie

+0

上記のコードで指定した追加された列「dayOfWeek」をテーブルの中央に移動する方法はありますか? Image:http://i.imgur.com/90jgibd.png – SavageSpud

0
SELECT Schedules.ScheduleID, Schedules.RouteID, 
CASE dayOfWeek 
    WHEN 1 THEN 'Monday' 
    WHEN 2 THEN 'Tuesday' 
    WHEN 3 THEN 'Wednesday' 
    WHEN 4 THEN 'Thursday' 
    WHEN 5 THEN 'Friday' 
    WHEN 6 THEN 'Saturday' 
    WHEN 7 THEN 'Sunday' 
END AS "dayOfWeek", Schedules.depTime, Schedules.arrTime, Schedules.Status 
FROM Schedules WHERE routeID = 1; 
0

私はそのSQL文を実行していたときに、この記事のタイトルで述べたように、私は同じエラーを受け取ります。下のメソッドからのコードスニッパ

public static DataSet getRouteSchedules(DataSet DS, int routeID) 
     { 
      con = new OracleConnection(DBConnect.oradb); 
      con.Open(); 

      string SQL = @"SELECT Schedules.ScheduleID, Schedules.RouteID, 
          CASE Schedules.dayOfWeek 
          WHEN 1 THEN 'Monday' 
          WHEN 2 THEN 'Tuesday' 
          WHEN 3 THEN 'Wednesday' 
          WHEN 4 THEN 'Thursday' 
          WHEN 5 THEN 'Friday' 
          WHEN 6 THEN 'Saturday' 
          WHEN 7 THEN 'Sunday' 
          END AS 'dayOfWeek', Schedules.depTime, Schedules.arrTime, Schedules.Status 
          FROM Schedules WHERE routeID = " + routeID; 

      OracleCommand cmd = new OracleCommand(SQL, con); 
      OracleDataAdapter DA = new OracleDataAdapter(cmd); 

      try 
      { 
       DA.Fill(DS, "Schedules"); 
      } 
      catch (OracleException ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 

      con.Close(); 

      return DS; 
+0

'dayOfWeek'を二重引用符で囲む必要があります。 – bernie

+0

それはStatmentを壊します。 Statment全体が二重引用符で囲まれているため。その周りのベストな方法? – SavageSpud

+1

dayOfWeekの周りに一重引用符または二重引用符を入れないように修正しました。 – SavageSpud

関連する問題