【问题标题】:A query "SELECT extract date + count" doesn't work (node.js+oracle sql)查询“SELECT extract date + count”不起作用(node.js+oracle sql)
【发布时间】:2016-05-04 15:11:54
【问题描述】:

可能有人可以帮助我。 我的查询在 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);
            });

非常感谢!

【问题讨论】:

  • 您的查询字符串的结尾/开头似乎需要空格
  • 非常感谢!太简单! =) 有效 =)

标签: node.js oracle


【解决方案1】:

您似乎缺少一些空格(每行的右侧),这些空格是查询有效所必需的。

试试这个:

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

【讨论】:

    猜你喜欢
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多