可能有人可以帮助我。 我的查询在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);
});
非常感谢!
答案 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);
}
);