Oracle 删除语句在 JS 中不起作用
Oracle delete statement is not working in JS
我正在尝试使用以下 JS 函数从 Oracle 数据库中的 table 中删除一行:
deleteDirection(directionId, callback) {
if (!this.connected) {
return Promise.reject(new Error('not connected')).asCallback(callback)
}
const connection = this.connection
const task = Promise.coroutine(function* () {
const conn = yield connection
const query = 'DELETE FROM directions WHERE direction_id = :directionId'
const result = yield conn.execute(query, { directionId }, {
outFormat: oracle.OBJECT,
})
.then(directionDeleted => {
if (directionDeleted.rowsAffected === 0) {
return Promise.reject(new Error('invalid number'))
}
return Promise.resolve(directionDeleted)
})
.catch(err => Promise.reject(new Error(err)));
return Promise.resolve(result)
})
return Promise.resolve(task()).asCallback(callback)
}
函数完成没有任何问题,但行没有被删除,如果我在 Oracle SQL Developer 上尝试相同的语句,它工作正常,可能是什么问题?
按照 NodeOracle 示例并将参数作为数组传递:
const result = yield conn.execute(query, [ directionId ], {
outFormat: oracle.OBJECT,
})
https://github.com/oracle/node-oracledb/blob/master/examples/select1.js
试试这个:
deleteDirection(directionId, callback) {
if (!this.connected) {
return Promise.reject(new Error('not connected')).asCallback(callback)
}
const connection = this.connection
const task = Promise.coroutine(function* () {
const conn = yield connection
const query = 'DELETE FROM directions WHERE direction_id = :directionId'
const result = yield conn.execute(query, { directionId: directionId}, {
outFormat: oracle.OBJECT,
autoCommit: true
})
.then(directionDeleted => {
if (directionDeleted.rowsAffected === 0) {
return Promise.reject(new Error('invalid number'))
}
return Promise.resolve(directionDeleted)
})
.catch(err => Promise.reject(new Error(err)));
return Promise.resolve(result)
})
return Promise.resolve(task()).asCallback(callback)
}
注意绑定变量的变化和 autoCommit 的使用。
您在使用转译器吗?
我正在尝试使用以下 JS 函数从 Oracle 数据库中的 table 中删除一行:
deleteDirection(directionId, callback) {
if (!this.connected) {
return Promise.reject(new Error('not connected')).asCallback(callback)
}
const connection = this.connection
const task = Promise.coroutine(function* () {
const conn = yield connection
const query = 'DELETE FROM directions WHERE direction_id = :directionId'
const result = yield conn.execute(query, { directionId }, {
outFormat: oracle.OBJECT,
})
.then(directionDeleted => {
if (directionDeleted.rowsAffected === 0) {
return Promise.reject(new Error('invalid number'))
}
return Promise.resolve(directionDeleted)
})
.catch(err => Promise.reject(new Error(err)));
return Promise.resolve(result)
})
return Promise.resolve(task()).asCallback(callback)
}
函数完成没有任何问题,但行没有被删除,如果我在 Oracle SQL Developer 上尝试相同的语句,它工作正常,可能是什么问题?
按照 NodeOracle 示例并将参数作为数组传递:
const result = yield conn.execute(query, [ directionId ], {
outFormat: oracle.OBJECT,
})
https://github.com/oracle/node-oracledb/blob/master/examples/select1.js
试试这个:
deleteDirection(directionId, callback) {
if (!this.connected) {
return Promise.reject(new Error('not connected')).asCallback(callback)
}
const connection = this.connection
const task = Promise.coroutine(function* () {
const conn = yield connection
const query = 'DELETE FROM directions WHERE direction_id = :directionId'
const result = yield conn.execute(query, { directionId: directionId}, {
outFormat: oracle.OBJECT,
autoCommit: true
})
.then(directionDeleted => {
if (directionDeleted.rowsAffected === 0) {
return Promise.reject(new Error('invalid number'))
}
return Promise.resolve(directionDeleted)
})
.catch(err => Promise.reject(new Error(err)));
return Promise.resolve(result)
})
return Promise.resolve(task()).asCallback(callback)
}
注意绑定变量的变化和 autoCommit 的使用。
您在使用转译器吗?