我尝试在末尾添加“RETURNING FEATURE\u ID”,但抛出了一个错误“Cursor is not open”。
查询
-
选择
-键入SQL语句。
RETURNING
条款不属于
类型,它们属于
过程调用
类型你应该像执行常规命令一样执行它们
DELETE
现在,我正在使用Henri Gourvest的node firebird库来实现这一点:
https://github.com/hgourvest/node-firebird/
-
从未
一定要剪接你的
SQL中的值
文本它使您的程序非常脆弱。它会给您带来各种数据转换错误,还为意外的错误或恶意用户输入造成的数据库损坏打开了通道。看见
http://bobby-tables.com/
和
http://en.wikipedia.org/wiki/SQL_injection
-
,因此您可以阅读库的创建者打算如何使用它。这个特定的库有测试。测试总是预期用途的例子。
所以你进入
test
run.js
现在按Ctrl+F并搜索“RETURNING”单词。不一定是第一次,但其中一次应该是对您需要的SQL功能进行精确测试。
function test_insert(next) {
....skip.......
// Insert record without blob
database.query('INSERT INTO test (ID, NAME, CREATED, PARENT) VALUES(?, ?, ?, ?) RETURNING ID', [3, 'Firebird 3', now, 862304020112911], function(err, r) {
assert.ok(!err, name + ': insert without blob (buffer) (1) ' + err);
assert.ok(r['id'] === 3, name + ': without blob (buffer) returning value');
next();
});
// Insert record without blob (without returning value)
database.query('INSERT INTO test (ID, NAME, CREATED) VALUES(?, ?, ?)', [4, 'Firebird 4', '2014-12-12 13:59'], function(err, r) {
assert.ok(!err, name + ': insert without blob (buffer) (2) ' + err);
assert.ok(err === undefined, name + ': insert without blob + without returning value');
next();
});