Почему я получаю «ORA-01036: недопустимое имя / номер переменной» при использовании TO_DATE, но работает на Oracle SQL разработчику? (Используя узел) - PullRequest
1 голос
/ 10 марта 2020

У меня есть следующая схема ...

CREATE TABLE CALL_DATE(
  ID VARCHAR(30) NOT NULL,
  SERVER VARCHAR(30) NOT NULL,
  MADE_DATE DATE NOT NULL,
  CONSTRAINT CALL_SERVER_CONSTRAINT UNIQUE (ID, SERVER)
);

И у меня есть следующий код с использованием узла oracle драйвер ...

const SELECT_QUERY = "SELECT * FROM CALL_DATE WHERE MADE_DATE = TO_DATE(?,'YYYY-MM-DD')";
const SQL_FMT = "YYYY-MM-DD";

query(cmd, params){
    params = params || [];
    CallDate.validatePool(this.pool);
    return this.connection.then((connection)=>{
        console.log("Connection Created "+JSON.stringify(params));
        return connection.execute(
            cmd,
            params
        );
    });
}
getCallsOnDate(date){
    date = moment(new Date(date));
    console.log(`The date is ${date.format(SQL_FMT)}`);
    return this.query(
        SELECT_QUERY,
        [date.format(SQL_FMT)]
    ).catch((err)=>{
        Logger.log("error", `Error getting call dates on ${date} ${err}`);
        throw new Error(err);
    });
}
...
// works
obj.query(`SELECT * FROM CALL_DATE`).then((result)=>{
    console.log(`Query completed ${JSON.stringify(result)}`);
});
// Fails
obj.getCallsOnDate("12/21/2012").then((result)=>{
    console.log(`getCallsOnDate completed ${JSON.stringify(result)}`);
})

Все работает для запроса функция, но когда я пытаюсь использовать функцию даты, я получаю ...

ORA-01036: недопустимое имя / номер переменной

Если я запускаю следующее в Oracle SQL Разработчик Все отлично работает ...

SELECT * FROM CALL_DATE WHERE MADE_DATE = TO_DATE('2020-01-01','YYYY-MM-DD');

Чего мне не хватает, почему он работает в SQL разработчику, а не в коде узла?

1 Ответ

0 голосов
/ 10 марта 2020

К сожалению, я перенес этот код из MySQL, поэтому мне нужно было обновить свой запрос, чтобы он выглядел следующим образом ...

const SELECT_QUERY = "SELECT * FROM CALL_DATE WHERE MADE_DATE = TO_DATE(:1,'YYYY-MM-DD')";

Обратите внимание :1 вместо ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...