2016-05-04 16 views
0

誰かが私を助けてくれるかもしれません。 私の問合せはOracleデベロッパー内で動作しますが、サーバー側に配置しようとしたときには実行されません。私のサーバー側はnode.jsで構築されています。クエリ "SELECT extract date + count"が機能しません(node.js + oracle sql)

エラーはORA-00933です.SQLコマンドが正しく終了していません。

(オラクルのSQL Developerから)だから、このバージョンの作品:最初の列の二突き止めで、年間検索します:年に対応する出版物の総量を

SELECT EXTRACT(YEAR FROM PUBLICATIONS.PUBLICATION_DATE), COUNT(PUBLICATIONS.PUBLICATION_ID) 
FROM PUBLICATIONS 
GROUP BY EXTRACT(YEAR FROM PUBLICATIONS.PUBLICATION_DATE) 

結果はどこのテーブルです。

しかし、これは(サーバーからの要求を)動作しません。

connection.execute(
    "SELECT EXTRACT(YEAR FROM PUBLICATIONS.PUBLICATION_DATE), COUNT(PUBLICATIONS.PUBLICATION_ID)"+ 
    "FROM PUBLICATIONS PU"+ 
    "GROUP BY EXTRACT(YEAR FROM PU.PUBLICATION_DATE)", 
    [], { maxRows: 10 }, 
    function(err, result){ 
     if (err) { console.error(Err_sql,err.message); return; } 
     console.log(Sql_ans,result.rows); 
    }); 

はまた、私はもっと単純な要求をチェックし、それが動作します:

connection.execute(
      "SELECT Title " + 
      "FROM Title " + 
      "WHERE Title.title_id = :id", 
      [111], { maxRows: 10 }, // bind value for :id 
      function(err, result){ 
       if (err) { console.error(Err_sql,err.message); return; } 
       console.log(Sql_ans,result.rows); 
      }); 

ありがとうございました!

+0

あなたがどうもありがとうございまし – Aleksej

+0

あなたのクエリ文字列の終わり/初めに空白を必要とするようです!とても簡単! =)それは=) –

答えて

2

クエリを有効にするために必要な空白(各行の右側)が不足しているようです。

はこれを試してみてください:

connection.execute(
    "SELECT EXTRACT(YEAR FROM PUBLICATIONS.PUBLICATION_DATE), COUNT(PUBLICATIONS.PUBLICATION_ID) "+ 
    "FROM PUBLICATIONS PU "+ 
    "GROUP BY EXTRACT(YEAR FROM PU.PUBLICATION_DATE)", 
    [], { maxRows: 10 }, 
    function(err, result){ 
     if (err) { console.error(Err_sql,err.message); return; } 
     console.log(Sql_ans,result.rows); 
    } 
); 
+0

ありがとうございます、あなたは正しい=) –

関連する問題