查询" SELECT提取日期+计数"不起作用(node.js + oracle sql)

时间:2016-05-04 15:11:54

标签: node.js oracle

可能有人可以帮助我。 我的查询在oracle开发人员中运行,但是当我尝试将其驻留在服务器端时它没有。我的服务器端是用node.js构建的。

  

错误是ORA-00933:SQL命令未正确结束。

所以这个版本有效(来自oracle 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);
            });

非常感谢!

1 个答案:

答案 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);
    }
);