Test updates
This commit is contained in:
parent
064bd0f5b6
commit
4aec928c29
|
@ -0,0 +1,931 @@
|
|||
/* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. */
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* You may not use the identified files except in compliance with the Apache
|
||||
* License, Version 2.0 (the "License.")
|
||||
*
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* The node-oracledb test suite uses 'mocha', 'should' and 'async'.
|
||||
* See LICENSE.md for relevant licenses.
|
||||
*
|
||||
* NAME
|
||||
* 92. binding_DMLInsert.js
|
||||
*
|
||||
* DESCRIPTION
|
||||
* This suite tests the data binding, including:
|
||||
* Test cases insert oracledb type STRING/BUFFER to all db column types
|
||||
* The cases take small/null/large bind values.
|
||||
*
|
||||
* NUMBERING RULE
|
||||
* Test numbers follow this numbering rule:
|
||||
* 1 - 20 are reserved for basic functional tests
|
||||
* 21 - 50 are reserved for data type supporting tests
|
||||
* 51 onwards are for other tests
|
||||
*
|
||||
*****************************************************************************/
|
||||
'use strict';
|
||||
|
||||
var oracledb = require('oracledb');
|
||||
var should = require('should');
|
||||
var async = require('async');
|
||||
var sql = require('./sql.js');
|
||||
var dbConfig = require('./dbconfig.js');
|
||||
var assist = require('./dataTypeAssist.js');
|
||||
var random = require('./random.js');
|
||||
|
||||
describe('92.binding_DMLInsert.js', function() {
|
||||
this.timeout(5000);
|
||||
var connection = null;
|
||||
var executeSql = function(sql, callback) {
|
||||
connection.execute(
|
||||
sql,
|
||||
function(err) {
|
||||
should.not.exist(err);
|
||||
return callback();
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
before(function(done) {
|
||||
oracledb.getConnection(dbConfig, function(err, conn) {
|
||||
should.not.exist(err);
|
||||
connection = conn;
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
after(function(done) {
|
||||
connection.release( function(err) {
|
||||
should.not.exist(err);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
var doTest = function(table_name, content, dbColType, bindType, nullBind, largeVal, callback) {
|
||||
async.series([
|
||||
function(cb) {
|
||||
var bindVar = { c: { val: content, type: bindType, dir: oracledb.BIND_IN } };
|
||||
dmlInsert(table_name, dbColType, bindVar, bindType, nullBind, largeVal, cb);
|
||||
},
|
||||
function(cb) {
|
||||
var bindVar =[ { val: content, type: bindType, dir: oracledb.BIND_IN } ];
|
||||
dmlInsert(table_name, dbColType, bindVar, bindType, nullBind, largeVal,cb);
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
||||
var dmlInsert = function(table_name, dbColType, bindVar, bindType, nullBind, largeVal, callback) {
|
||||
var createTable = sql.createTable(table_name, dbColType);
|
||||
var drop_table = "DROP TABLE " + table_name + " PURGE";
|
||||
async.series([
|
||||
function(cb) {
|
||||
executeSql(createTable, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
"insert into " + table_name + " ( content ) values (:c)",
|
||||
bindVar,
|
||||
function(err) {
|
||||
if(largeVal === true) {
|
||||
if(bindType === oracledb.STRING) {
|
||||
compareErrMsg_string(dbColType, err);
|
||||
} else {
|
||||
compareErrMsg_buffer(dbColType, err);
|
||||
}
|
||||
} else {
|
||||
if(bindType === oracledb.STRING) {
|
||||
compareErrMsg_dml_string(nullBind, dbColType, err);
|
||||
} else {
|
||||
compareErrMsg_dml_buffer(dbColType, err);
|
||||
}
|
||||
}
|
||||
cb();
|
||||
}
|
||||
);
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(drop_table, cb);
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
||||
var compareErrMsg_dml_string = function(nullBind, element, err) {
|
||||
if(nullBind === true) {
|
||||
should.not.exist(err);
|
||||
} else {
|
||||
if(element.indexOf("CHAR") > -1 || element === "CLOB") {
|
||||
should.not.exist(err);
|
||||
}
|
||||
if(element === "NUMBER" || element.indexOf("FLOAT") > -1 || element === "BINARY_DOUBLE") {
|
||||
// ORA-01722: invalid number
|
||||
(err.message).should.startWith('ORA-01722:');
|
||||
}
|
||||
if(element === "TIMESTAMP" || element === "DATE") {
|
||||
// ORA-01858: a non-numeric character was found where a numeric was expected
|
||||
(err.message).should.startWith('ORA-01858');
|
||||
}
|
||||
if(element === "BLOB" || element.indexOf("RAW") > -1) {
|
||||
// console.log(element+"======"+err);
|
||||
// ORA-01465: invalid hex number
|
||||
(err.message).should.startWith('ORA-01465:');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var compareErrMsg_dml_buffer = function(element, err) {
|
||||
if(element === "NUMBER" || element === "DATE" || element === "TIMESTAMP" || element.indexOf("FLOAT") > -1) {
|
||||
// NUMBER: ORA-00932: inconsistent datatypes: expected NUMBER got BINARY
|
||||
// DATE: ORA-00932: inconsistent datatypes: expected DATE got BINARY
|
||||
// TIMESTAMP: ORA-00932: inconsistent datatypes: expected TIMESTAMP got BINARY
|
||||
// FLOAT: ORA-00932: inconsistent datatypes: expected BINARY_FLOAT got BINARY
|
||||
(err.message).should.startWith('ORA-00932:');
|
||||
}
|
||||
if(element === "BLOB" || element === "CLOB" || element.indexOf("CHAR") > -1 || element.indexOf("RAW") > -1) {
|
||||
should.not.exist(err);
|
||||
}
|
||||
};
|
||||
|
||||
var compareErrMsg_string = function(element, err) {
|
||||
if(element.indexOf("CHAR") > -1) {
|
||||
// ORA-12899: value too large for column "HR"."TABLE_9250"."CONTENT"
|
||||
(err.message).should.startWith('ORA-12899:');
|
||||
}
|
||||
if(element === "NUMBER" || element.indexOf("FLOAT") > -1 || element === "BINARY_DOUBLE") {
|
||||
// ORA-01722: invalid number
|
||||
(err.message).should.startWith('ORA-01722:');
|
||||
}
|
||||
if(element === "DATE") {
|
||||
// ORA-01858: a non-numeric character was found where a numeric was expected
|
||||
(err.message).should.startWith('ORA-01858');
|
||||
}
|
||||
if(element === "TIMESTAMP") {
|
||||
// ORA-01877: string is too long for internal buffer
|
||||
(err.message).should.startWith('ORA-01877');
|
||||
}
|
||||
if(element === "BLOB" || element.indexOf("RAW") > -1) {
|
||||
// console.log(element+"======"+err);
|
||||
// ORA-01465: invalid hex number
|
||||
(err.message).should.startWith('ORA-01465:');
|
||||
}
|
||||
if(element === "CLOB" ) {
|
||||
should.not.exist(err);
|
||||
}
|
||||
};
|
||||
|
||||
var compareErrMsg_buffer = function(element, err) {
|
||||
if(element === "NUMBER" || element === "DATE" || element === "TIMESTAMP" || element.indexOf("FLOAT") > -1) {
|
||||
// NUMBER: ORA-00932: inconsistent datatypes: expected NUMBER got BINARY
|
||||
// DATE: ORA-00932: inconsistent datatypes: expected DATE got BINARY
|
||||
// TIMESTAMP: ORA-00932: inconsistent datatypes: expected TIMESTAMP got BINARY
|
||||
// FLOAT: ORA-00932: inconsistent datatypes: expected BINARY_FLOAT got BINARY
|
||||
(err.message).should.startWith('ORA-00932:');
|
||||
}
|
||||
if(element.indexOf("CHAR") > -1 || element.indexOf("RAW") > -1) {
|
||||
// ORA-12899: value too large for column "HR"."TABLE_9250"."CONTENT"
|
||||
(err.message).should.startWith('ORA-12899:');
|
||||
}
|
||||
if(element === "BLOB" || element === "CLOB") {
|
||||
should.not.exist(err);
|
||||
}
|
||||
};
|
||||
var tableNamePre = "table_92";
|
||||
var index = 0;
|
||||
|
||||
describe('92.1 insert small value of oracledb.STRING/BUFFER', function() {
|
||||
it('92.1.1 oracledb.STRING <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.1.2 oracledb.STRING <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.1.3 oracledb.STRING <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.1.4 oracledb.STRING <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.1.5 oracledb.STRING <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.1.6 oracledb.STRING <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.1.7 oracledb.STRING <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.1.8 oracledb.STRING <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.1.9 oracledb.STRING <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.1.10 oracledb.STRING <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.1.11 oracledb.STRING <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.1.12 oracledb.STRING <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.1.13 oracledb.BUFFER <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.1.14 oracledb.BUFFER <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.1.15 oracledb.BUFFER <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.1.16 oracledb.BUFFER <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.1.17 oracledb.BUFFER <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.1.18 oracledb.BUFFER <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.1.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.1.20 oracledb.BUFFER <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.1.21 oracledb.BUFFER <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.1.22 oracledb.BUFFER <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.1.23 oracledb.BUFFER <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.1.24 oracledb.BUFFER <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
});
|
||||
|
||||
describe('92.2 insert null value of oracledb.STRING/BUFFER', function() {
|
||||
it('92.2.1 oracledb.STRING <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = true;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.2.2 oracledb.STRING <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.2.3 oracledb.STRING <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.2.4 oracledb.STRING <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = true;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.2.5 oracledb.STRING <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.2.6 oracledb.STRING <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.2.7 oracledb.STRING <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.2.8 oracledb.STRING <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.2.9 oracledb.STRING <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = true;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.2.10 oracledb.STRING <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = true;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.2.11 oracledb.STRING <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.2.12 oracledb.STRING <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.2.13 oracledb.BUFFER <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = true;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.2.14 oracledb.BUFFER <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.2.15 oracledb.BUFFER <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.2.16 oracledb.BUFFER <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = true;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.2.17 oracledb.BUFFER <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.2.18 oracledb.BUFFER <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.2.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.2.20 oracledb.BUFFER <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.2.21 oracledb.BUFFER <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = true;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.2.22 oracledb.BUFFER <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = true;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.2.23 oracledb.BUFFER <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
|
||||
it('92.2.24 oracledb.BUFFER <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, false, done);
|
||||
});
|
||||
});
|
||||
|
||||
describe('92.3 insert large value of oracledb.STRING/BUFFER', function() {
|
||||
it('92.3.1 oracledb.STRING <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = random.getRandomLengthString(2000);
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, true, done);
|
||||
});
|
||||
|
||||
it('92.3.2 oracledb.STRING <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = random.getRandomLengthString(2000);
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, true, done);
|
||||
});
|
||||
|
||||
it('92.3.3 oracledb.STRING <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = random.getRandomLengthString(2000);
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, true, done);
|
||||
});
|
||||
|
||||
it('92.3.4 oracledb.STRING <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = random.getRandomLengthString(2000);
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, true, done);
|
||||
});
|
||||
|
||||
it('92.3.5 oracledb.STRING <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = random.getRandomLengthString(2000);
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, true, done);
|
||||
});
|
||||
|
||||
it('92.3.6 oracledb.STRING <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = random.getRandomLengthString(2000);
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, true, done);
|
||||
});
|
||||
|
||||
it('92.3.7 oracledb.STRING <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = random.getRandomLengthString(2000);
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, true, done);
|
||||
});
|
||||
|
||||
it('92.3.8 oracledb.STRING <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = "abc" + random.getRandomLengthString(1997);
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, true, done);
|
||||
});
|
||||
|
||||
it('92.3.9 oracledb.STRING <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = random.getRandomLengthString(2000);
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, true, done);
|
||||
});
|
||||
|
||||
it('92.3.10 oracledb.STRING <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = random.getRandomLengthString(2000);
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, true, done);
|
||||
});
|
||||
|
||||
it('92.3.11 oracledb.STRING <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = random.getRandomLengthString(2000);
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, true, done);
|
||||
});
|
||||
|
||||
it('92.3.12 oracledb.STRING <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = random.getRandomLengthString(2000);
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, true, done);
|
||||
});
|
||||
|
||||
it('92.3.13 oracledb.BUFFER <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(2000);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, true, done);
|
||||
});
|
||||
|
||||
it('92.3.14 oracledb.BUFFER <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(2000);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, true, done);
|
||||
});
|
||||
|
||||
it('92.3.15 oracledb.BUFFER <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(2000);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, true, done);
|
||||
});
|
||||
|
||||
it('92.3.16 oracledb.BUFFER <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(2000);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, true, done);
|
||||
});
|
||||
|
||||
it('92.3.17 oracledb.BUFFER <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(2000);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, true, done);
|
||||
});
|
||||
|
||||
it('92.3.18 oracledb.BUFFER <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(2000);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, true, done);
|
||||
});
|
||||
|
||||
it('92.3.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(2000);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, true, done);
|
||||
});
|
||||
|
||||
it('92.3.20 oracledb.BUFFER <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(2000);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, true, done);
|
||||
});
|
||||
|
||||
it('92.3.21 oracledb.BUFFER <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(2000);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, true, done);
|
||||
});
|
||||
|
||||
it('92.3.22 oracledb.BUFFER <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(2000);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, true, done);
|
||||
});
|
||||
|
||||
it('92.3.23 oracledb.BUFFER <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(2000);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, true, done);
|
||||
});
|
||||
|
||||
it('92.3.24 oracledb.BUFFER <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(2000);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, content, dbColType, bindType, nullBind, true, done);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
});
|
|
@ -0,0 +1,635 @@
|
|||
/* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. */
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* You may not use the identified files except in compliance with the Apache
|
||||
* License, Version 2.0 (the "License.")
|
||||
*
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* The node-oracledb test suite uses 'mocha', 'should' and 'async'.
|
||||
* See LICENSE.md for relevant licenses.
|
||||
*
|
||||
* NAME
|
||||
* 98. binding_DMLReturningInto.js
|
||||
*
|
||||
* DESCRIPTION
|
||||
* This suite tests the data binding, including:
|
||||
* Test cases test returning into oracledb type STRING/BUFFER
|
||||
* The cases take small/null bind values.
|
||||
*
|
||||
* NUMBERING RULE
|
||||
* Test numbers follow this numbering rule:
|
||||
* 1 - 20 are reserved for basic functional tests
|
||||
* 21 - 50 are reserved for data type supporting tests
|
||||
* 51 onwards are for other tests
|
||||
*
|
||||
*****************************************************************************/
|
||||
'use strict';
|
||||
|
||||
var oracledb = require('oracledb');
|
||||
var should = require('should');
|
||||
var async = require('async');
|
||||
var sql = require('./sql.js');
|
||||
var dbConfig = require('./dbconfig.js');
|
||||
var assist = require('./dataTypeAssist.js');
|
||||
|
||||
describe('98.binding_DMLReturningInto.js', function() {
|
||||
this.timeout(5000);
|
||||
var connection = null;
|
||||
var executeSql = function(sql, callback) {
|
||||
connection.execute(
|
||||
sql,
|
||||
function(err) {
|
||||
should.not.exist(err);
|
||||
return callback();
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
before(function(done) {
|
||||
oracledb.getConnection(dbConfig, function(err, conn) {
|
||||
should.not.exist(err);
|
||||
connection = conn;
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
after(function(done) {
|
||||
connection.release( function(err) {
|
||||
should.not.exist(err);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
var doTest = function(table_name, dbColType, content, bindType, nullBind, callback) {
|
||||
var inserted = getInsertVal(dbColType, nullBind);
|
||||
async.series([
|
||||
function(cb) {
|
||||
var bindVar = {
|
||||
c: { val: inserted[0], type: inserted[1], dir: oracledb.BIND_IN },
|
||||
output: { type: bindType, dir: oracledb.BIND_OUT, maxSize: 2000 }
|
||||
};
|
||||
dmlInsert(table_name, dbColType, bindVar, bindType, nullBind, cb);
|
||||
},
|
||||
function(cb) {
|
||||
var bindVar =[ { val: inserted[0], type: inserted[1], dir: oracledb.BIND_IN }, { type: bindType, dir: oracledb.BIND_OUT, maxSize: 2000 } ];
|
||||
dmlInsert(table_name, dbColType, bindVar, bindType, nullBind, cb);
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
||||
var getInsertVal = function(element, nullBind) {
|
||||
var insertValue = [];
|
||||
if(element.indexOf("CHAR") > -1 || element === "CLOB") {
|
||||
insertValue[0] = (nullBind===true) ? null : "abcsca";
|
||||
insertValue[1] = oracledb.STRING;
|
||||
}
|
||||
if(element === "BINARY_DOUBLE" || element.indexOf("FLOAT") > -1 || element === "NUMBER") {
|
||||
insertValue[0] = (nullBind===true) ? null : 1;
|
||||
insertValue[1] = oracledb.NUMBER;
|
||||
}
|
||||
if(element === "TIMESTAMP" || element === "DATE") {
|
||||
insertValue[0] = (nullBind===true) ? null : new Date(0);
|
||||
insertValue[1] = oracledb.DATE;
|
||||
}
|
||||
if(element === "BLOB" || element.indexOf("RAW") > -1 ) {
|
||||
insertValue[0] = (nullBind===true) ? null : assist.createBuffer(100);
|
||||
insertValue[1] = oracledb.BUFFER;
|
||||
}
|
||||
return insertValue;
|
||||
};
|
||||
|
||||
var dmlInsert = function(table_name, dbColType, bindVar, bindType, nullBind, callback) {
|
||||
var createTable = sql.createTable(table_name, dbColType);
|
||||
var drop_table = "DROP TABLE " + table_name + " PURGE";
|
||||
async.series([
|
||||
function(cb) {
|
||||
executeSql(createTable, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
"insert into " + table_name + " ( content ) values (:c) returning content into :output",
|
||||
bindVar,
|
||||
function(err) {
|
||||
if(bindType === oracledb.STRING) {
|
||||
compareStrErrMsg(dbColType, err);
|
||||
} else {
|
||||
// NJS-028: RAW database type is not supported with DML Returning statements
|
||||
(err.message).should.startWith('NJS-028:');
|
||||
}
|
||||
cb();
|
||||
}
|
||||
);
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(drop_table, cb);
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
||||
var compareStrErrMsg = function(element, err) {
|
||||
if(element === "BLOB" && (connection.oracleServerVersion < 1202000100)) {
|
||||
// ORA-00932: inconsistent datatypes: expected CHAR got BLOB
|
||||
(err.message).should.startWith('ORA-00932:');
|
||||
} else {
|
||||
should.not.exist(err);
|
||||
}
|
||||
};
|
||||
|
||||
var tableNamePre = "table_981";
|
||||
var index = 0;
|
||||
|
||||
describe('98.1 bind out small value', function() {
|
||||
it('98.1.1 oracledb.STRING <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = false;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.1.2 oracledb.STRING <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.1.3 oracledb.STRING <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.1.4 oracledb.STRING <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = false;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.1.5 oracledb.STRING <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.1.6 oracledb.STRING <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.1.7 oracledb.STRING <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.1.8 oracledb.STRING <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.1.9 oracledb.STRING <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = false;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.1.10 oracledb.STRING <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = false;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.1.11 oracledb.STRING <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.1.12 oracledb.STRING <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.1.13 oracledb.BUFFER <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = false;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.1.14 oracledb.BUFFER <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.1.15 oracledb.BUFFER <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.1.16 oracledb.BUFFER <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = false;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.1.17 oracledb.BUFFER <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.1.18 oracledb.BUFFER <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.1.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.1.20 oracledb.BUFFER <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.1.21 oracledb.BUFFER <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = false;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.1.22 oracledb.BUFFER <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = false;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.1.23 oracledb.BUFFER <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.1.24 oracledb.BUFFER <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
});
|
||||
|
||||
describe('98.2 bind out null value', function() {
|
||||
it('98.2.1 oracledb.STRING <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = true;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.2.2 oracledb.STRING <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.2.3 oracledb.STRING <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.2.4 oracledb.STRING <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = true;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.2.5 oracledb.STRING <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.2.6 oracledb.STRING <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.2.7 oracledb.STRING <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.2.8 oracledb.STRING <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.2.9 oracledb.STRING <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = true;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.2.10 oracledb.STRING <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = true;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.2.11 oracledb.STRING <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.2.12 oracledb.STRING <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.2.13 oracledb.BUFFER <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = true;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.2.14 oracledb.BUFFER <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.2.15 oracledb.BUFFER <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.2.16 oracledb.BUFFER <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = true;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.2.17 oracledb.BUFFER <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.2.18 oracledb.BUFFER <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.2.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.2.20 oracledb.BUFFER <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.2.21 oracledb.BUFFER <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = true;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.2.22 oracledb.BUFFER <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = true;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.2.23 oracledb.BUFFER <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('98.2.24 oracledb.BUFFER <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
|
@ -0,0 +1,729 @@
|
|||
/* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. */
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* You may not use the identified files except in compliance with the Apache
|
||||
* License, Version 2.0 (the "License.")
|
||||
*
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* The node-oracledb test suite uses 'mocha', 'should' and 'async'.
|
||||
* See LICENSE.md for relevant licenses.
|
||||
*
|
||||
* NAME
|
||||
* 100. binding_defaultBindIn.js
|
||||
*
|
||||
* DESCRIPTION
|
||||
* This suite tests the data binding, including:
|
||||
* Test cases test bind in oracledb type STRING/BUFFER to all db column types using plsql procedure and function
|
||||
* The cases use default bind type and dir.
|
||||
* The cases take null bind values.
|
||||
*
|
||||
* NUMBERING RULE
|
||||
* Test numbers follow this numbering rule:
|
||||
* 1 - 20 are reserved for basic functional tests
|
||||
* 21 - 50 are reserved for data type supporting tests
|
||||
* 51 onwards are for other tests
|
||||
*
|
||||
*****************************************************************************/
|
||||
'use strict';
|
||||
|
||||
var oracledb = require('oracledb');
|
||||
var should = require('should');
|
||||
var async = require('async');
|
||||
var sql = require('./sql.js');
|
||||
var dbConfig = require('./dbconfig.js');
|
||||
|
||||
describe('100.binding_defaultBindIn.js', function() {
|
||||
this.timeout(5000);
|
||||
var connection = null;
|
||||
var executeSql = function(sql, callback) {
|
||||
connection.execute(
|
||||
sql,
|
||||
function(err) {
|
||||
should.not.exist(err);
|
||||
return callback();
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
before(function(done) {
|
||||
oracledb.getConnection(dbConfig, function(err, conn) {
|
||||
should.not.exist(err);
|
||||
connection = conn;
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
after(function(done) {
|
||||
connection.release( function(err) {
|
||||
should.not.exist(err);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
var doTest1 = function(table_name, proc_name, dbColType, content, bindType, callback) {
|
||||
async.series([
|
||||
function(cb) {
|
||||
var bindVar = { c: content };
|
||||
inBind1(table_name, proc_name, dbColType, bindVar, bindType, cb);
|
||||
},
|
||||
function(cb) {
|
||||
var bindVar =[ content ];
|
||||
inBind1(table_name, proc_name, dbColType, bindVar, bindType, cb);
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
||||
var doTest2 = function(table_name, procName, bindType, dbColType, content, sequence, callback) {
|
||||
async.series([
|
||||
function(cb) {
|
||||
var bindVar = {
|
||||
i: sequence,
|
||||
c: content,
|
||||
output: { type: oracledb.NUMBER, dir: oracledb.BIND_OUT }
|
||||
};
|
||||
inBind2(table_name, procName, dbColType, bindVar, bindType, cb);
|
||||
},
|
||||
function(cb) {
|
||||
var bindVar =[ { type: oracledb.NUMBER, dir: oracledb.BIND_OUT }, sequence, content ];
|
||||
inBind2(table_name, procName, dbColType, bindVar, bindType, cb);
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
||||
var inBind1 = function(table_name, proc_name, dbColType, bindVar, bindType, callback) {
|
||||
var createTable = sql.createTable(table_name, dbColType);
|
||||
var drop_table = "DROP TABLE " + table_name + " PURGE";
|
||||
var proc = "CREATE OR REPLACE PROCEDURE " + proc_name + " (inValue IN " + dbColType + ")\n" +
|
||||
"AS \n" +
|
||||
"BEGIN \n" +
|
||||
" insert into " + table_name + " ( content ) values (inValue); \n" +
|
||||
"END " + proc_name + "; ";
|
||||
var sqlRun = "BEGIN " + proc_name + " (:c); END;";
|
||||
var proc_drop = "DROP PROCEDURE " + proc_name;
|
||||
async.series([
|
||||
function(cb) {
|
||||
executeSql(createTable, cb);
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(proc, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
bindVar,
|
||||
function(err) {
|
||||
compareErrMsg(dbColType, err);
|
||||
cb();
|
||||
}
|
||||
);
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(proc_drop, cb);
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(drop_table, cb);
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
||||
var inBind2 = function(table_name, fun_name, dbColType, bindVar, bindType, callback) {
|
||||
var createTable = sql.createTable(table_name, dbColType);
|
||||
var drop_table = "DROP TABLE " + table_name + " PURGE";
|
||||
var proc = "CREATE OR REPLACE FUNCTION " + fun_name + " (ID IN NUMBER, inValue IN " + dbColType + ") RETURN NUMBER\n" +
|
||||
"IS \n" +
|
||||
" tmpvar NUMBER; \n" +
|
||||
"BEGIN \n" +
|
||||
" insert into " + table_name + " ( id, content ) values (ID, inValue); \n" +
|
||||
" select id into tmpvar from " + table_name + " where id = ID; \n" +
|
||||
" RETURN tmpvar; \n" +
|
||||
"END ; ";
|
||||
var sqlRun = "BEGIN :output := " + fun_name + " (:i, :c); END;";
|
||||
var proc_drop = "DROP FUNCTION " + fun_name;
|
||||
// console.log(proc);
|
||||
async.series([
|
||||
function(cb) {
|
||||
executeSql(createTable, cb);
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(proc, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
bindVar,
|
||||
function(err) {
|
||||
compareErrMsg(dbColType, err);
|
||||
cb();
|
||||
}
|
||||
);
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(proc_drop, cb);
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(drop_table, cb);
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
||||
var compareErrMsg = function(element, err) {
|
||||
if(element === "BLOB") {
|
||||
// ORA-06550: line 1, column 7:
|
||||
// PLS-00306: wrong number or types of arguments in call to 'NODB_INBIND_XX'
|
||||
// ORA-06550: line 1, column 7:
|
||||
// PL/SQL: Statement ignored
|
||||
(err.message).should.startWith('ORA-06550:');
|
||||
} else {
|
||||
should.not.exist(err);
|
||||
}
|
||||
};
|
||||
|
||||
var tableNamePre = "table_100";
|
||||
var procPre = "proc_100";
|
||||
var index = 0;
|
||||
|
||||
describe('100.1 PLSQL procedure: bind in null value with default type and dir', function() {
|
||||
|
||||
it('100.1.1 oracledb.STRING <--> DB: NUMBER', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NUMBER";
|
||||
|
||||
doTest1(table_name, proc_name, dbColType, content, bindType, done);
|
||||
});
|
||||
|
||||
it('100.1.2 oracledb.STRING <--> DB: CHAR', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CHAR";
|
||||
|
||||
doTest1(table_name, proc_name, dbColType, content, bindType, done);
|
||||
});
|
||||
|
||||
it('100.1.3 oracledb.STRING <--> DB: NCHAR', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NCHAR";
|
||||
|
||||
doTest1(table_name, proc_name, dbColType, content, bindType, done);
|
||||
});
|
||||
|
||||
it('100.1.4 oracledb.STRING <--> DB: VARCHAR2', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "VARCHAR2";
|
||||
|
||||
doTest1(table_name, proc_name, dbColType, content, bindType, done);
|
||||
});
|
||||
|
||||
it('100.1.5 oracledb.STRING <--> DB: FLOAT', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "FLOAT";
|
||||
|
||||
doTest1(table_name, proc_name, dbColType, content, bindType, done);
|
||||
});
|
||||
|
||||
it('100.1.6 oracledb.STRING <--> DB: BINARY_FLOAT', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
|
||||
doTest1(table_name, proc_name, dbColType, content, bindType, done);
|
||||
});
|
||||
|
||||
it('100.1.7 oracledb.STRING <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
|
||||
doTest1(table_name, proc_name, dbColType, content, bindType, done);
|
||||
});
|
||||
|
||||
it('100.1.8 oracledb.STRING <--> DB: DATE', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "DATE";
|
||||
|
||||
doTest1(table_name, proc_name, dbColType, content, bindType, done);
|
||||
});
|
||||
|
||||
it('100.1.9 oracledb.STRING <--> DB: TIMESTAMP', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "TIMESTAMP";
|
||||
|
||||
doTest1(table_name, proc_name, dbColType, content, bindType, done);
|
||||
});
|
||||
|
||||
it('100.1.10 oracledb.STRING <--> DB: RAW', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "RAW";
|
||||
|
||||
doTest1(table_name, proc_name, dbColType, content, bindType, done);
|
||||
});
|
||||
|
||||
it('100.1.11 oracledb.STRING <--> DB: CLOB', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CLOB";
|
||||
|
||||
doTest1(table_name, proc_name, dbColType, content, bindType, done);
|
||||
});
|
||||
|
||||
it('100.1.12 oracledb.STRING <--> DB: BLOB', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BLOB";
|
||||
|
||||
doTest1(table_name, proc_name, dbColType, content, bindType, done);
|
||||
});
|
||||
|
||||
it('100.1.13 oracledb.BUFFER <--> DB: NUMBER', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NUMBER";
|
||||
|
||||
doTest1(table_name, proc_name, dbColType, content, bindType, done);
|
||||
});
|
||||
|
||||
it('100.1.14 oracledb.BUFFER <--> DB: CHAR', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CHAR";
|
||||
|
||||
doTest1(table_name, proc_name, dbColType, content, bindType, done);
|
||||
});
|
||||
|
||||
it('100.1.15 oracledb.BUFFER <--> DB: NCHAR', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NCHAR";
|
||||
|
||||
doTest1(table_name, proc_name, dbColType, content, bindType, done);
|
||||
});
|
||||
|
||||
it('100.1.16 oracledb.BUFFER <--> DB: VARCHAR2', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "VARCHAR2";
|
||||
|
||||
doTest1(table_name, proc_name, dbColType, content, bindType, done);
|
||||
});
|
||||
|
||||
it('100.1.17 oracledb.BUFFER <--> DB: FLOAT', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "FLOAT";
|
||||
|
||||
doTest1(table_name, proc_name, dbColType, content, bindType, done);
|
||||
});
|
||||
|
||||
it('100.1.18 oracledb.BUFFER <--> DB: BINARY_FLOAT', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
|
||||
doTest1(table_name, proc_name, dbColType, content, bindType, done);
|
||||
});
|
||||
|
||||
it('100.1.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
|
||||
doTest1(table_name, proc_name, dbColType, content, bindType, done);
|
||||
});
|
||||
|
||||
it('100.1.20 oracledb.BUFFER <--> DB: DATE', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "DATE";
|
||||
|
||||
doTest1(table_name, proc_name, dbColType, content, bindType, done);
|
||||
});
|
||||
|
||||
it('100.1.21 oracledb.BUFFER <--> DB: TIMESTAMP', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "TIMESTAMP";
|
||||
|
||||
doTest1(table_name, proc_name, dbColType, content, bindType, done);
|
||||
});
|
||||
|
||||
it('100.1.22 oracledb.BUFFER <--> DB: RAW', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "RAW";
|
||||
|
||||
doTest1(table_name, proc_name, dbColType, content, bindType, done);
|
||||
});
|
||||
|
||||
it('100.1.23 oracledb.BUFFER <--> DB: CLOB', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CLOB";
|
||||
|
||||
doTest1(table_name, proc_name, dbColType, content, bindType, done);
|
||||
});
|
||||
|
||||
it('100.1.24 oracledb.BUFFER <--> DB: BLOB', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BLOB";
|
||||
|
||||
doTest1(table_name, proc_name, dbColType, content, bindType, done);
|
||||
});
|
||||
});
|
||||
|
||||
describe('100.2 PLSQL function: bind in null value with default type and dir', function() {
|
||||
|
||||
it('100.2.1 oracledb.STRING <--> DB: NUMBER', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NUMBER";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('100.2.2 oracledb.STRING <--> DB: CHAR', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CHAR";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('100.2.3 oracledb.STRING <--> DB: NCHAR', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NCHAR";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('100.2.4 oracledb.STRING <--> DB: VARCHAR2', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "VARCHAR2";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('100.2.5 oracledb.STRING <--> DB: FLOAT', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "FLOAT";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('100.2.6 oracledb.STRING <--> DB: BINARY_FLOAT', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('100.2.7 oracledb.STRING <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('100.2.8 oracledb.STRING <--> DB: DATE', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "DATE";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('100.2.9 oracledb.STRING <--> DB: TIMESTAMP', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "TIMESTAMP";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('100.2.10 oracledb.STRING <--> DB: RAW', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "RAW";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('100.2.11 oracledb.STRING <--> DB: CLOB', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CLOB";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('100.2.12 oracledb.STRING <--> DB: BLOB', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BLOB";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('100.2.13 oracledb.BUFFER <--> DB: NUMBER', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NUMBER";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('100.2.14 oracledb.BUFFER <--> DB: CHAR', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CHAR";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('100.2.15 oracledb.BUFFER <--> DB: NCHAR', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NCHAR";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('100.2.16 oracledb.BUFFER <--> DB: VARCHAR2', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "VARCHAR2";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('100.2.17 oracledb.BUFFER <--> DB: FLOAT', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "FLOAT";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('100.2.18 oracledb.BUFFER <--> DB: BINARY_FLOAT', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('100.2.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('100.2.20 oracledb.BUFFER <--> DB: DATE', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "DATE";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('100.2.21 oracledb.BUFFER <--> DB: TIMESTAMP', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "TIMESTAMP";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('100.2.22 oracledb.BUFFER <--> DB: RAW', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "RAW";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('100.2.23 oracledb.BUFFER <--> DB: CLOB', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CLOB";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('100.2.24 oracledb.BUFFER <--> DB: BLOB', function(done) {
|
||||
index ++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BLOB";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
|
@ -0,0 +1,734 @@
|
|||
/* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. */
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* You may not use the identified files except in compliance with the Apache
|
||||
* License, Version 2.0 (the "License.")
|
||||
*
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* The node-oracledb test suite uses 'mocha', 'should' and 'async'.
|
||||
* See LICENSE.md for relevant licenses.
|
||||
*
|
||||
* NAME
|
||||
* 101. binding_defaultBindInout.js
|
||||
*
|
||||
* DESCRIPTION
|
||||
* This suite tests the data binding, including:
|
||||
* Test cases test bind inout oracledb type STRING/BUFFER to all db column types using plsql procedure and function
|
||||
* The cases use default bind type and dir.
|
||||
* The cases take null bind values.
|
||||
*
|
||||
* NUMBERING RULE
|
||||
* Test numbers follow this numbering rule:
|
||||
* 1 - 20 are reserved for basic functional tests
|
||||
* 21 - 50 are reserved for data type supporting tests
|
||||
* 51 onwards are for other tests
|
||||
*
|
||||
*****************************************************************************/
|
||||
'use strict';
|
||||
|
||||
var oracledb = require('oracledb');
|
||||
var should = require('should');
|
||||
var async = require('async');
|
||||
var sql = require('./sql.js');
|
||||
var dbConfig = require('./dbconfig.js');
|
||||
|
||||
describe('101.binding_defaultBindInout.js', function() {
|
||||
this.timeout(5000);
|
||||
var connection = null;
|
||||
var executeSql = function(sql, callback) {
|
||||
connection.execute(
|
||||
sql,
|
||||
function(err) {
|
||||
should.not.exist(err);
|
||||
return callback();
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
before(function(done) {
|
||||
oracledb.getConnection(dbConfig, function(err, conn) {
|
||||
should.not.exist(err);
|
||||
connection = conn;
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
after(function(done) {
|
||||
connection.release( function(err) {
|
||||
should.not.exist(err);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
var doTest1 = function(table_name, procName, bindType, dbColType, content, sequence, callback) {
|
||||
async.series([
|
||||
function(cb) {
|
||||
var bindVar = {
|
||||
i: sequence,
|
||||
c: content
|
||||
};
|
||||
inBind1(table_name, procName, dbColType, bindVar, bindType, cb);
|
||||
},
|
||||
function(cb) {
|
||||
var bindVar =[ sequence, content ];
|
||||
inBind1(table_name, procName, dbColType, bindVar, bindType, cb);
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
||||
var inBind1 = function(table_name, proc_name, dbColType, bindVar, bindType, callback) {
|
||||
var createTable = sql.createTable(table_name, dbColType);
|
||||
var drop_table = "DROP TABLE " + table_name + " PURGE";
|
||||
var proc = "CREATE OR REPLACE PROCEDURE " + proc_name + " (ID IN NUMBER, inValue IN OUT " + dbColType + ")\n" +
|
||||
"AS \n" +
|
||||
"BEGIN \n" +
|
||||
" insert into " + table_name + " ( id, content ) values (ID, inValue); \n" +
|
||||
" select content into inValue from " + table_name + " where id = ID; \n" +
|
||||
"END " + proc_name + "; ";
|
||||
var sqlRun = "BEGIN " + proc_name + " (:i, :c); END;";
|
||||
var proc_drop = "DROP PROCEDURE " + proc_name;
|
||||
// console.log(proc);
|
||||
async.series([
|
||||
function(cb) {
|
||||
executeSql(createTable, cb);
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(proc, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
bindVar,
|
||||
function(err) {
|
||||
compareErrMsg(dbColType, err);
|
||||
cb();
|
||||
}
|
||||
);
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(proc_drop, cb);
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(drop_table, cb);
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
||||
var doTest2 = function(table_name, procPre, bindType, dbColType, content, sequence, callback) {
|
||||
async.series([
|
||||
function(cb) {
|
||||
var bindVar = {
|
||||
i: sequence,
|
||||
c: content,
|
||||
output: { type: oracledb.NUMBER, dir: oracledb.BIND_OUT }
|
||||
};
|
||||
inBind2(table_name, procPre, dbColType, bindVar, bindType, cb);
|
||||
},
|
||||
function(cb) {
|
||||
var bindVar =[ { type: oracledb.NUMBER, dir: oracledb.BIND_OUT }, sequence, content ];
|
||||
inBind2(table_name, procPre, dbColType, bindVar, bindType, cb);
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
||||
var inBind2 = function(table_name, fun_name, dbColType, bindVar, bindType, callback) {
|
||||
var createTable = sql.createTable(table_name, dbColType);
|
||||
var drop_table = "DROP TABLE " + table_name + " PURGE";
|
||||
var proc = "CREATE OR REPLACE FUNCTION " + fun_name + " (ID IN NUMBER, inValue IN OUT " + dbColType + ") RETURN NUMBER\n" +
|
||||
"IS \n" +
|
||||
" tmpvar NUMBER; \n" +
|
||||
"BEGIN \n" +
|
||||
" insert into " + table_name + " ( id, content ) values (ID, inValue); \n" +
|
||||
" select id, content into tmpvar, inValue from " + table_name + " where id = ID; \n" +
|
||||
" RETURN tmpvar; \n" +
|
||||
"END ; ";
|
||||
var sqlRun = "BEGIN :output := " + fun_name + " (:i, :c); END;";
|
||||
var proc_drop = "DROP FUNCTION " + fun_name;
|
||||
// console.log(proc);
|
||||
async.series([
|
||||
function(cb) {
|
||||
executeSql(createTable, cb);
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(proc, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
bindVar,
|
||||
function(err) {
|
||||
compareErrMsg(dbColType, err);
|
||||
cb();
|
||||
}
|
||||
);
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(proc_drop, cb);
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(drop_table, cb);
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
||||
var compareErrMsg = function(element, err) {
|
||||
if(element === "BLOB") {
|
||||
// ORA-06550: line 1, column 7:
|
||||
// PLS-00306: wrong number or types of arguments in call to 'NODB_INBIND_XX'
|
||||
// ORA-06550: line 1, column 7:
|
||||
// PL/SQL: Statement ignored
|
||||
(err.message).should.startWith('ORA-06550:');
|
||||
} else {
|
||||
should.not.exist(err);
|
||||
}
|
||||
};
|
||||
|
||||
var tableNamePre = "table_101";
|
||||
var procPre = "proc_101";
|
||||
var index = 1;
|
||||
|
||||
describe('101.1 PLSQL procedure: bind out null value with default type and dir', function() {
|
||||
|
||||
it('101.1.1 oracledb.STRING <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NUMBER";
|
||||
|
||||
doTest1(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.1.2 oracledb.STRING <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CHAR";
|
||||
|
||||
doTest1(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.1.3 oracledb.STRING <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NCHAR";
|
||||
|
||||
doTest1(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.1.4 oracledb.STRING <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "VARCHAR2";
|
||||
|
||||
doTest1(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.1.5 oracledb.STRING <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "FLOAT";
|
||||
|
||||
doTest1(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.1.6 oracledb.STRING <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
|
||||
doTest1(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.1.7 oracledb.STRING <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
|
||||
doTest1(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.1.8 oracledb.STRING <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "DATE";
|
||||
|
||||
doTest1(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.1.9 oracledb.STRING <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "TIMESTAMP";
|
||||
|
||||
doTest1(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.1.10 oracledb.STRING <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "RAW";
|
||||
|
||||
doTest1(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.1.11 oracledb.STRING <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CLOB";
|
||||
|
||||
doTest1(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.1.12 oracledb.STRING <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BLOB";
|
||||
|
||||
doTest1(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.1.13 oracledb.BUFFER <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NUMBER";
|
||||
|
||||
doTest1(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.1.14 oracledb.BUFFER <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CHAR";
|
||||
|
||||
doTest1(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.1.15 oracledb.BUFFER <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NCHAR";
|
||||
|
||||
doTest1(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.1.16 oracledb.BUFFER <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "VARCHAR2";
|
||||
|
||||
doTest1(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.1.17 oracledb.BUFFER <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "FLOAT";
|
||||
|
||||
doTest1(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.1.18 oracledb.BUFFER <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
|
||||
doTest1(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.1.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
|
||||
doTest1(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.1.20 oracledb.BUFFER <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "DATE";
|
||||
|
||||
doTest1(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.1.21 oracledb.BUFFER <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "TIMESTAMP";
|
||||
|
||||
doTest1(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.1.22 oracledb.BUFFER <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "RAW";
|
||||
|
||||
doTest1(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.1.23 oracledb.BUFFER <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CLOB";
|
||||
|
||||
doTest1(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.1.24 oracledb.BUFFER <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BLOB";
|
||||
|
||||
doTest1(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
});
|
||||
|
||||
describe('101.2 PLSQL function: bind out null value with default type and dir', function() {
|
||||
|
||||
it('101.2.1 oracledb.STRING <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NUMBER";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.2.2 oracledb.STRING <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CHAR";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.2.3 oracledb.STRING <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NCHAR";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.2.4 oracledb.STRING <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "VARCHAR2";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.2.5 oracledb.STRING <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "FLOAT";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.2.6 oracledb.STRING <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.2.7 oracledb.STRING <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.2.8 oracledb.STRING <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "DATE";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.2.9 oracledb.STRING <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "TIMESTAMP";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.2.10 oracledb.STRING <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "RAW";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.2.11 oracledb.STRING <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CLOB";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.2.12 oracledb.STRING <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BLOB";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.2.13 oracledb.BUFFER <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NUMBER";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.2.14 oracledb.BUFFER <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CHAR";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.2.15 oracledb.BUFFER <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NCHAR";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.2.16 oracledb.BUFFER <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "VARCHAR2";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.2.17 oracledb.BUFFER <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "FLOAT";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.2.18 oracledb.BUFFER <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.2.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.2.20 oracledb.BUFFER <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "DATE";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.2.21 oracledb.BUFFER <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "TIMESTAMP";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.2.22 oracledb.BUFFER <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "RAW";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.2.23 oracledb.BUFFER <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CLOB";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
|
||||
it('101.2.24 oracledb.BUFFER <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BLOB";
|
||||
|
||||
doTest2(table_name, proc_name, bindType, dbColType, content, index, done);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
|
@ -0,0 +1,718 @@
|
|||
/* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. */
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* You may not use the identified files except in compliance with the Apache
|
||||
* License, Version 2.0 (the "License.")
|
||||
*
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* The node-oracledb test suite uses 'mocha', 'should' and 'async'.
|
||||
* See LICENSE.md for relevant licenses.
|
||||
*
|
||||
* NAME
|
||||
* 99. binding_functionBindIn.js
|
||||
*
|
||||
* DESCRIPTION
|
||||
* This suite tests the data binding, including:
|
||||
* Test cases bind in oracledb type STRING/BUFFER to all db column types using plsql function
|
||||
* The cases take small/null bind values.
|
||||
*
|
||||
* NUMBERING RULE
|
||||
* Test numbers follow this numbering rule:
|
||||
* 1 - 20 are reserved for basic functional tests
|
||||
* 21 - 50 are reserved for data type supporting tests
|
||||
* 51 onwards are for other tests
|
||||
*
|
||||
*****************************************************************************/
|
||||
'use strict';
|
||||
|
||||
var oracledb = require('oracledb');
|
||||
var should = require('should');
|
||||
var async = require('async');
|
||||
var sql = require('./sql.js');
|
||||
var dbConfig = require('./dbconfig.js');
|
||||
var assist = require('./dataTypeAssist.js');
|
||||
|
||||
describe('99.binding_functionBindIn.js', function() {
|
||||
this.timeout(5000);
|
||||
var connection = null;
|
||||
var executeSql = function(sql, callback) {
|
||||
connection.execute(
|
||||
sql,
|
||||
function(err) {
|
||||
should.not.exist(err);
|
||||
return callback();
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
before(function(done) {
|
||||
oracledb.getConnection(dbConfig, function(err, conn) {
|
||||
should.not.exist(err);
|
||||
connection = conn;
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
after(function(done) {
|
||||
connection.release( function(err) {
|
||||
should.not.exist(err);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
var doTest = function(table_name, procName, bindType, dbColType, content, sequence, nullBind, callback) {
|
||||
async.series([
|
||||
function(cb) {
|
||||
var bindVar = {
|
||||
i: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c: { val: content, type: bindType, dir: oracledb.BIND_IN },
|
||||
output: { type: oracledb.NUMBER, dir: oracledb.BIND_OUT }
|
||||
};
|
||||
inBind(table_name, procName, dbColType, bindVar, bindType, nullBind, cb);
|
||||
},
|
||||
function(cb) {
|
||||
var bindVar =[ { type: oracledb.NUMBER, dir: oracledb.BIND_OUT }, sequence, { val: content, type: bindType, dir: oracledb.BIND_IN } ];
|
||||
inBind(table_name, procName, dbColType, bindVar, bindType, nullBind, cb);
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
||||
var inBind = function(table_name, fun_name, dbColType, bindVar, bindType, nullBind, callback) {
|
||||
var createTable = sql.createTable(table_name, dbColType);
|
||||
var drop_table = "DROP TABLE " + table_name + " PURGE";
|
||||
var proc = "CREATE OR REPLACE FUNCTION " + fun_name + " (ID IN NUMBER, inValue IN " + dbColType + ") RETURN NUMBER\n" +
|
||||
"IS \n" +
|
||||
" tmpvar NUMBER; \n" +
|
||||
"BEGIN \n" +
|
||||
" insert into " + table_name + " ( id, content ) values (ID, inValue); \n" +
|
||||
" select id into tmpvar from " + table_name + " where id = ID; \n" +
|
||||
" RETURN tmpvar; \n" +
|
||||
"END ; ";
|
||||
var sqlRun = "BEGIN :output := " + fun_name + " (:i, :c); END;";
|
||||
var proc_drop = "DROP FUNCTION " + fun_name;
|
||||
// console.log(proc);
|
||||
async.series([
|
||||
function(cb) {
|
||||
executeSql(createTable, cb);
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(proc, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
bindVar,
|
||||
function(err) {
|
||||
if(bindType === oracledb.STRING) {
|
||||
compareErrMsgForString(nullBind,dbColType, err);
|
||||
} else {
|
||||
compareErrMsgForRAW(dbColType, err);
|
||||
}
|
||||
cb();
|
||||
}
|
||||
);
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(proc_drop, cb);
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(drop_table, cb);
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
||||
var compareErrMsgForString = function(nullBind, element, err) {
|
||||
if(element === "BLOB") {
|
||||
// ORA-06550: line 1, column 7:
|
||||
// PLS-00306: wrong number or types of arguments in call to 'NODB_INBIND_12'
|
||||
// ORA-06550: line 1, column 7:
|
||||
// PL/SQL: Statement ignored
|
||||
(err.message).should.startWith('ORA-06550:');
|
||||
} else {
|
||||
if(nullBind === true) {
|
||||
should.not.exist(err);
|
||||
} else {
|
||||
if(element.indexOf("CHAR") > -1 || element === "CLOB") {
|
||||
should.not.exist(err);
|
||||
}
|
||||
if(element.indexOf("FLOAT") > -1 || element === "NUMBER" || element.indexOf("RAW") > -1) {
|
||||
// FLOAT ORA-06502: PL/SQL: numeric or value error: character to number conversion error
|
||||
// BINARY_FLOAT ORA-06502: PL/SQL: numeric or value error
|
||||
// NUMBER: ORA-06502: PL/SQL: numeric or value error: character to number conversion error
|
||||
// RAW: ORA-06502: PL/SQL: numeric or value error: hex to raw conversion error
|
||||
(err.message).should.startWith('ORA-06502:');
|
||||
}
|
||||
if(element === "BINARY_DOUBLE") {
|
||||
// ORA-01847: ORA-06502: PL/SQL: numeric or value error
|
||||
(err.message).should.startWith('ORA-06502:');
|
||||
}
|
||||
if(element === "DATE" || element === "TIMESTAMP") {
|
||||
// ORA-01858: a non-numeric character was found where a numeric was expected
|
||||
(err.message).should.startWith('ORA-01858:');
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var compareErrMsgForRAW = function(element, err) {
|
||||
if(element === "NUMBER" || element.indexOf("FLOAT") > -1 || element === "BINARY_DOUBLE" || element === "DATE" || element === "TIMESTAMP" || element === "CLOB") {
|
||||
// ORA-06550: line 1, column 7:
|
||||
// PLS-00306: wrong number or types of arguments in call to 'NODB_INBIND_XX'
|
||||
// ORA-06550: line 1, column 7:
|
||||
// PL/SQL: Statement ignored
|
||||
(err.message).should.startWith('ORA-06550:');
|
||||
}
|
||||
if(element.indexOf("CHAR") > -1 || element.indexOf("RAW") > -1 || element === "BLOB") {
|
||||
should.not.exist(err);
|
||||
}
|
||||
};
|
||||
|
||||
var tableNamePre = "table_99";
|
||||
var procPre = "proc_99";
|
||||
var index = 1;
|
||||
|
||||
describe('99.1 PLSQL function: bind in small value of oracledb.STRING/BUFFER', function() {
|
||||
|
||||
it('99.1.1 oracledb.STRING <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.1.2 oracledb.STRING <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.1.3 oracledb.STRING <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.1.4 oracledb.STRING <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.1.5 oracledb.STRING <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.1.6 oracledb.STRING <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.1.7 oracledb.STRING <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.1.8 oracledb.STRING <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.1.9 oracledb.STRING <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.1.10 oracledb.STRING <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.1.11 oracledb.STRING <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.1.12 oracledb.STRING <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.1.13 oracledb.BUFFER <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.1.14 oracledb.BUFFER <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.1.15 oracledb.BUFFER <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.1.16 oracledb.BUFFER <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.1.17 oracledb.BUFFER <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.1.18 oracledb.BUFFER <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.1.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.1.20 oracledb.BUFFER <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.1.21 oracledb.BUFFER <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.1.22 oracledb.BUFFER <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.1.23 oracledb.BUFFER <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.1.24 oracledb.BUFFER <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
});
|
||||
|
||||
describe('99.2 PLSQL function: bind in null value of oracledb.STRING/BUFFER', function() {
|
||||
|
||||
it('99.2.1 oracledb.STRING <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.2.2 oracledb.STRING <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.2.3 oracledb.STRING <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.2.4 oracledb.STRING <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.2.5 oracledb.STRING <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.2.6 oracledb.STRING <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.2.7 oracledb.STRING <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.2.8 oracledb.STRING <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.2.9 oracledb.STRING <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.2.10 oracledb.STRING <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.2.11 oracledb.STRING <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.2.12 oracledb.STRING <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.2.13 oracledb.BUFFER <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.2.14 oracledb.BUFFER <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.2.15 oracledb.BUFFER <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.2.16 oracledb.BUFFER <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.2.17 oracledb.BUFFER <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.2.18 oracledb.BUFFER <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.2.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.2.20 oracledb.BUFFER <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.2.21 oracledb.BUFFER <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.2.22 oracledb.BUFFER <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.2.23 oracledb.BUFFER <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('99.2.24 oracledb.BUFFER <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
|
@ -0,0 +1,726 @@
|
|||
/* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. */
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* You may not use the identified files except in compliance with the Apache
|
||||
* License, Version 2.0 (the "License.")
|
||||
*
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* The node-oracledb test suite uses 'mocha', 'should' and 'async'.
|
||||
* See LICENSE.md for relevant licenses.
|
||||
*
|
||||
* NAME
|
||||
* 95. binding_functionBindInout.js
|
||||
*
|
||||
* DESCRIPTION
|
||||
* This suite tests the data binding, including:
|
||||
* Test cases bind inout oracledb type STRING/BUFFER to all db column types using plsql function
|
||||
* The cases take small/null bind values.
|
||||
*
|
||||
* NUMBERING RULE
|
||||
* Test numbers follow this numbering rule:
|
||||
* 1 - 20 are reserved for basic functional tests
|
||||
* 21 - 50 are reserved for data type supporting tests
|
||||
* 51 onwards are for other tests
|
||||
*
|
||||
*****************************************************************************/
|
||||
'use strict';
|
||||
|
||||
var oracledb = require('oracledb');
|
||||
var should = require('should');
|
||||
var async = require('async');
|
||||
var sql = require('./sql.js');
|
||||
var dbConfig = require('./dbconfig.js');
|
||||
var assist = require('./dataTypeAssist.js');
|
||||
|
||||
describe('95.binding_functionBindInout.js', function() {
|
||||
this.timeout(5000);
|
||||
var connection = null;
|
||||
var executeSql = function(sql, callback) {
|
||||
connection.execute(
|
||||
sql,
|
||||
function(err) {
|
||||
should.not.exist(err);
|
||||
return callback();
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
before(function(done) {
|
||||
oracledb.getConnection(dbConfig, function(err, conn) {
|
||||
should.not.exist(err);
|
||||
connection = conn;
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
after(function(done) {
|
||||
connection.release( function(err) {
|
||||
should.not.exist(err);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
var doTest = function(table_name, procPre, bindType, dbColType, content, sequence, nullBind, callback) {
|
||||
async.series([
|
||||
function(cb) {
|
||||
var bindVar = {
|
||||
i: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c: { val: content, type: bindType, dir: oracledb.BIND_INOUT, maxSize: 1000 },
|
||||
output: { type: oracledb.NUMBER, dir: oracledb.BIND_OUT }
|
||||
};
|
||||
inBind(table_name, procPre, dbColType, bindVar, bindType, nullBind, cb);
|
||||
},
|
||||
function(cb) {
|
||||
var bindVar =[ { type: oracledb.NUMBER, dir: oracledb.BIND_OUT }, sequence, { val: content, type: bindType, dir: oracledb.BIND_INOUT, maxSize: 1000 } ];
|
||||
inBind(table_name, procPre, dbColType, bindVar, bindType, nullBind, cb);
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
||||
var inBind = function(table_name, fun_name, dbColType, bindVar, bindType, nullBind, callback) {
|
||||
var createTable = sql.createTable(table_name, dbColType);
|
||||
var drop_table = "DROP TABLE " + table_name + " PURGE";
|
||||
var proc = "CREATE OR REPLACE FUNCTION " + fun_name + " (ID IN NUMBER, inValue IN OUT " + dbColType + ") RETURN NUMBER\n" +
|
||||
"IS \n" +
|
||||
" tmpvar NUMBER; \n" +
|
||||
"BEGIN \n" +
|
||||
" insert into " + table_name + " ( id, content ) values (ID, inValue); \n" +
|
||||
" select id, content into tmpvar, inValue from " + table_name + " where id = ID; \n" +
|
||||
" RETURN tmpvar; \n" +
|
||||
"END ; ";
|
||||
var sqlRun = "BEGIN :output := " + fun_name + " (:i, :c); END;";
|
||||
var proc_drop = "DROP FUNCTION " + fun_name;
|
||||
// console.log(proc);
|
||||
async.series([
|
||||
function(cb) {
|
||||
executeSql(createTable, cb);
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(proc, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
bindVar,
|
||||
function(err) {
|
||||
if(bindType === oracledb.STRING) {
|
||||
compareErrMsgForString(nullBind, dbColType, err);
|
||||
} else {
|
||||
compareErrMsgForRAW(nullBind, dbColType, err);
|
||||
}
|
||||
cb();
|
||||
}
|
||||
);
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(proc_drop, cb);
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(drop_table, cb);
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
||||
var compareErrMsgForString = function(nullBind, element, err) {
|
||||
if(element === "BLOB") {
|
||||
// ORA-06550: line 1, column 7:
|
||||
// PLS-00306: wrong number or types of arguments in call to 'NODB_INBIND_XX'
|
||||
// ORA-06550: line 1, column 7:
|
||||
// PL/SQL: Statement ignored
|
||||
(err.message).should.startWith('ORA-06550:');
|
||||
} else {
|
||||
if(nullBind === true) {
|
||||
should.not.exist(err);
|
||||
} else {
|
||||
if(element.indexOf("CHAR") > -1 || element === "CLOB") {
|
||||
should.not.exist(err);
|
||||
}
|
||||
if(element.indexOf("FLOAT") > -1 || element === "NUMBER" || element.indexOf("RAW") > -1) {
|
||||
// FLOAT ORA-06502: PL/SQL: numeric or value error: character to number conversion error
|
||||
// BINARY_FLOAT ORA-06502: PL/SQL: numeric or value error
|
||||
// NUMBER: ORA-06502: PL/SQL: numeric or value error: character to number conversion error
|
||||
// RAW: ORA-06502: PL/SQL: numeric or value error: hex to raw conversion error
|
||||
(err.message).should.startWith('ORA-06502:');
|
||||
}
|
||||
if(element === "BINARY_DOUBLE") {
|
||||
// ORA-01847: ORA-06502: PL/SQL: numeric or value error
|
||||
(err.message).should.startWith('ORA-06502:');
|
||||
}
|
||||
if(element === "DATE" || element === "TIMESTAMP") {
|
||||
// ORA-01858: a non-numeric character was found where a numeric was expected
|
||||
(err.message).should.startWith('ORA-01858:');
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var compareErrMsgForRAW = function(nullBind, element, err) {
|
||||
if(element === "NUMBER" || element.indexOf("FLOAT") > -1 || element === "BINARY_DOUBLE" || element === "DATE" || element === "TIMESTAMP" || element === "CLOB") {
|
||||
// ORA-06550: line 1, column 7:
|
||||
// PLS-00306: wrong number or types of arguments in call to 'NODB_INBIND_XX'
|
||||
// ORA-06550: line 1, column 7:
|
||||
// PL/SQL: Statement ignored
|
||||
(err.message).should.startWith('ORA-06550:');
|
||||
}
|
||||
if(element.indexOf("RAW") > -1 || element === "BLOB" || element === "VARCHAR2") {
|
||||
should.not.exist(err);
|
||||
}
|
||||
if(element === "NCHAR" || element === "CHAR") {
|
||||
if(nullBind === true) {
|
||||
should.not.exist(err);
|
||||
} else {
|
||||
// ORA-06502: PL/SQL: numeric or value error: raw variable length too long
|
||||
(err.message).should.startWith('ORA-06502:');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var tableNamePre = "table_95";
|
||||
var procPre = "proc_95";
|
||||
var index = 1;
|
||||
|
||||
describe('95.1 PLSQL function: bind inout small value of oracledb.STRING/BUFFER', function() {
|
||||
|
||||
it('95.1.1 oracledb.STRING <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.1.2 oracledb.STRING <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.1.3 oracledb.STRING <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.1.4 oracledb.STRING <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.1.5 oracledb.STRING <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.1.6 oracledb.STRING <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.1.7 oracledb.STRING <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.1.8 oracledb.STRING <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.1.9 oracledb.STRING <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.1.10 oracledb.STRING <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.1.11 oracledb.STRING <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.1.12 oracledb.STRING <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.1.13 oracledb.BUFFER <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.1.14 oracledb.BUFFER <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.1.15 oracledb.BUFFER <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.1.16 oracledb.BUFFER <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.1.17 oracledb.BUFFER <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.1.18 oracledb.BUFFER <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.1.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.1.20 oracledb.BUFFER <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.1.21 oracledb.BUFFER <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.1.22 oracledb.BUFFER <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.1.23 oracledb.BUFFER <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.1.24 oracledb.BUFFER <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
});
|
||||
|
||||
describe('95.2 PLSQL function: bind inout null value of oracledb.STRING/BUFFER', function() {
|
||||
|
||||
it('95.2.1 oracledb.STRING <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.2.2 oracledb.STRING <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.2.3 oracledb.STRING <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.2.4 oracledb.STRING <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.2.5 oracledb.STRING <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.2.6 oracledb.STRING <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.2.7 oracledb.STRING <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.2.8 oracledb.STRING <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.2.9 oracledb.STRING <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.2.10 oracledb.STRING <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.2.11 oracledb.STRING <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.2.12 oracledb.STRING <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.2.13 oracledb.BUFFER <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.2.14 oracledb.BUFFER <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.2.15 oracledb.BUFFER <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.2.16 oracledb.BUFFER <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.2.17 oracledb.BUFFER <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.2.18 oracledb.BUFFER <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.2.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.2.20 oracledb.BUFFER <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.2.21 oracledb.BUFFER <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.2.22 oracledb.BUFFER <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.2.23 oracledb.BUFFER <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('95.2.24 oracledb.BUFFER <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
|
@ -0,0 +1,742 @@
|
|||
/* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. */
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* You may not use the identified files except in compliance with the Apache
|
||||
* License, Version 2.0 (the "License.")
|
||||
*
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* The node-oracledb test suite uses 'mocha', 'should' and 'async'.
|
||||
* See LICENSE.md for relevant licenses.
|
||||
*
|
||||
* NAME
|
||||
* 97. binding_functionBindOut.js
|
||||
*
|
||||
* DESCRIPTION
|
||||
* This suite tests the data binding, including:
|
||||
* Test cases get oracledb type STRING/BUFFER from all db column types using plsql function
|
||||
* The cases take small/null bind values.
|
||||
*
|
||||
* NUMBERING RULE
|
||||
* Test numbers follow this numbering rule:
|
||||
* 1 - 20 are reserved for basic functional tests
|
||||
* 21 - 50 are reserved for data type supporting tests
|
||||
* 51 onwards are for other tests
|
||||
*
|
||||
*****************************************************************************/
|
||||
'use strict';
|
||||
|
||||
var oracledb = require('oracledb');
|
||||
var should = require('should');
|
||||
var async = require('async');
|
||||
var sql = require('./sql.js');
|
||||
var dbConfig = require('./dbconfig.js');
|
||||
var assist = require('./dataTypeAssist.js');
|
||||
|
||||
describe('97.binding_functionBindOut.js', function() {
|
||||
this.timeout(5000);
|
||||
var connection = null;
|
||||
var executeSql = function(sql, callback) {
|
||||
connection.execute(
|
||||
sql,
|
||||
function(err) {
|
||||
should.not.exist(err);
|
||||
return callback();
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
before(function(done) {
|
||||
oracledb.getConnection(dbConfig, function(err, conn) {
|
||||
should.not.exist(err);
|
||||
connection = conn;
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
after(function(done) {
|
||||
connection.release( function(err) {
|
||||
should.not.exist(err);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
var doTest = function(table_name, procPre, bindType, dbColType, content, sequence, nullBind, callback) {
|
||||
async.series([
|
||||
function(cb) {
|
||||
var bindVar = {
|
||||
i: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c: { type: bindType, dir: oracledb.BIND_OUT, maxSize: 1000 },
|
||||
output: { type: oracledb.NUMBER, dir: oracledb.BIND_OUT, maxSize: 1000 }
|
||||
};
|
||||
inBind(table_name, procPre, sequence, dbColType, bindVar, bindType, nullBind, cb);
|
||||
},
|
||||
function(cb) {
|
||||
var bindVar =[ { type: oracledb.NUMBER, dir: oracledb.BIND_OUT, maxSize: 1000 }, sequence, { type: bindType, dir: oracledb.BIND_OUT, maxSize: 1000 } ];
|
||||
inBind(table_name, procPre, sequence, dbColType, bindVar, bindType, nullBind, cb);
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
||||
var getInsertVal = function(element, nullBind) {
|
||||
var insertValue = [];
|
||||
if(element.indexOf("CHAR") > -1 || element === "CLOB") {
|
||||
insertValue[0] = (nullBind===true) ? null : "abcsca";
|
||||
insertValue[1] = oracledb.STRING;
|
||||
}
|
||||
if(element === "BINARY_DOUBLE" || element.indexOf("FLOAT") > -1 || element === "NUMBER") {
|
||||
insertValue[0] = (nullBind===true) ? null : 1;
|
||||
insertValue[1] = oracledb.NUMBER;
|
||||
}
|
||||
if(element === "TIMESTAMP" || element === "DATE") {
|
||||
insertValue[0] = (nullBind===true) ? null : new Date(0);
|
||||
insertValue[1] = oracledb.DATE;
|
||||
}
|
||||
if(element === "BLOB" || element.indexOf("RAW") > -1 ) {
|
||||
insertValue[0] = (nullBind===true) ? null : assist.createBuffer(100);
|
||||
insertValue[1] = oracledb.BUFFER;
|
||||
}
|
||||
return insertValue;
|
||||
};
|
||||
|
||||
var inBind = function(table_name, fun_name, sequence, dbColType, bindVar, bindType, nullBind, callback) {
|
||||
var createTable = sql.createTable(table_name, dbColType);
|
||||
var drop_table = "DROP TABLE " + table_name + " PURGE";
|
||||
var proc = "CREATE OR REPLACE FUNCTION " + fun_name + " (ID IN NUMBER, inValue OUT " + dbColType + ") RETURN NUMBER\n" +
|
||||
"IS \n" +
|
||||
" tmpvar NUMBER; \n" +
|
||||
"BEGIN \n" +
|
||||
" select id, content into tmpvar, inValue from " + table_name + " where id = ID; \n" +
|
||||
" RETURN tmpvar; \n" +
|
||||
"END ; ";
|
||||
var sqlRun = "BEGIN :output := " + fun_name + " (:i, :c); END;";
|
||||
var proc_drop = "DROP FUNCTION " + fun_name;
|
||||
// console.log(proc);
|
||||
var inserted = getInsertVal(dbColType, nullBind);
|
||||
var insertSql = "insert into " + table_name + " (id, content) values (:c1, :c2)";
|
||||
async.series([
|
||||
function(cb) {
|
||||
executeSql(createTable, cb);
|
||||
},
|
||||
function(cb) {
|
||||
var bind = {
|
||||
c1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c2: { val: inserted[0], type: inserted[1], dir: oracledb.BIND_IN }
|
||||
};
|
||||
// console.log(insertSql);
|
||||
connection.execute(
|
||||
insertSql,
|
||||
bind,
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
should.strictEqual(result.rowsAffected, 1);
|
||||
cb();
|
||||
});
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(proc, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
bindVar,
|
||||
function(err) {
|
||||
if(bindType === oracledb.STRING) {
|
||||
compareErrMsgForString(dbColType, err);
|
||||
} else {
|
||||
compareErrMsgForRAW(nullBind, dbColType, err);
|
||||
}
|
||||
cb();
|
||||
}
|
||||
);
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(proc_drop, cb);
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(drop_table, cb);
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
||||
var compareErrMsgForString = function(element, err) {
|
||||
if(element === "BLOB") {
|
||||
// ORA-06550: line 1, column 7:
|
||||
// PLS-00306: wrong number or types of arguments in call to 'NODB_INBIND_12'
|
||||
// ORA-06550: line 1, column 7:
|
||||
// PL/SQL: Statement ignored
|
||||
(err.message).should.startWith('ORA-06550:');
|
||||
} else {
|
||||
should.not.exist(err);
|
||||
}
|
||||
};
|
||||
|
||||
var compareErrMsgForRAW = function(nullBind, element, err) {
|
||||
if(element === "NUMBER" || element.indexOf("FLOAT") > -1 || element === "BINARY_DOUBLE" || element === "DATE" || element === "TIMESTAMP" || element === "CLOB") {
|
||||
// ORA-06550: line 1, column 7:
|
||||
// PLS-00306: wrong number or types of arguments in call to 'NODB_INBIND_XX'
|
||||
// ORA-06550: line 1, column 7:
|
||||
// PL/SQL: Statement ignored
|
||||
(err.message).should.startWith('ORA-06550:');
|
||||
}
|
||||
if(element.indexOf("RAW") > -1 || element === "BLOB") {
|
||||
should.not.exist(err);
|
||||
}
|
||||
if(element.indexOf("CHAR") > -1) {
|
||||
if(nullBind===true) {
|
||||
should.not.exist(err);
|
||||
} else {
|
||||
// ORA-06502: PL/SQL: numeric or value error: hex to raw conversion error
|
||||
(err.message).should.startWith('ORA-06502:');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var tableNamePre = "table_97";
|
||||
var procPre = "proc_97";
|
||||
var index = 1;
|
||||
|
||||
describe('97.1 PLSQL function: bind out small value to oracledb.STRING/BUFFER', function() {
|
||||
|
||||
it('97.1.1 oracledb.STRING <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.1.2 oracledb.STRING <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.1.3 oracledb.STRING <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.1.4 oracledb.STRING <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.1.5 oracledb.STRING <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.1.6 oracledb.STRING <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.1.7 oracledb.STRING <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.1.8 oracledb.STRING <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.1.9 oracledb.STRING <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.1.10 oracledb.STRING <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.1.11 oracledb.STRING <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.1.12 oracledb.STRING <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.1.13 oracledb.BUFFER <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.1.14 oracledb.BUFFER <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.1.15 oracledb.BUFFER <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.1.16 oracledb.BUFFER <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.1.17 oracledb.BUFFER <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.1.18 oracledb.BUFFER <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.1.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.1.20 oracledb.BUFFER <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.1.21 oracledb.BUFFER <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.1.22 oracledb.BUFFER <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.1.23 oracledb.BUFFER <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.1.24 oracledb.BUFFER <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
});
|
||||
|
||||
describe('97.2 PLSQL function: bind out small value to oracledb.STRING/BUFFER', function() {
|
||||
|
||||
it('97.2.1 oracledb.STRING <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.2.2 oracledb.STRING <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.2.3 oracledb.STRING <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.2.4 oracledb.STRING <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.2.5 oracledb.STRING <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.2.6 oracledb.STRING <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.2.7 oracledb.STRING <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.2.8 oracledb.STRING <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.2.9 oracledb.STRING <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.2.10 oracledb.STRING <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.2.11 oracledb.STRING <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.2.12 oracledb.STRING <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.2.13 oracledb.BUFFER <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.2.14 oracledb.BUFFER <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.2.15 oracledb.BUFFER <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.2.16 oracledb.BUFFER <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.2.17 oracledb.BUFFER <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.2.18 oracledb.BUFFER <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.2.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.2.20 oracledb.BUFFER <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.2.21 oracledb.BUFFER <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.2.22 oracledb.BUFFER <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.2.23 oracledb.BUFFER <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('97.2.24 oracledb.BUFFER <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
|
@ -0,0 +1,710 @@
|
|||
/* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. */
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* You may not use the identified files except in compliance with the Apache
|
||||
* License, Version 2.0 (the "License.")
|
||||
*
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* The node-oracledb test suite uses 'mocha', 'should' and 'async'.
|
||||
* See LICENSE.md for relevant licenses.
|
||||
*
|
||||
* NAME
|
||||
* 93. binding_procedureBindIn.js
|
||||
*
|
||||
* DESCRIPTION
|
||||
* This suite tests the data binding, including:
|
||||
* Test cases bind in oracledb type STRING/BUFFER to all db column types using plsql procedure
|
||||
* The cases take small/null bind values.
|
||||
*
|
||||
* NUMBERING RULE
|
||||
* Test numbers follow this numbering rule:
|
||||
* 1 - 20 are reserved for basic functional tests
|
||||
* 21 - 50 are reserved for data type supporting tests
|
||||
* 51 onwards are for other tests
|
||||
*
|
||||
*****************************************************************************/
|
||||
'use strict';
|
||||
|
||||
var oracledb = require('oracledb');
|
||||
var should = require('should');
|
||||
var async = require('async');
|
||||
var sql = require('./sql.js');
|
||||
var dbConfig = require('./dbconfig.js');
|
||||
var assist = require('./dataTypeAssist.js');
|
||||
|
||||
describe('93.binding_procedureBindIn.js', function() {
|
||||
this.timeout(5000);
|
||||
var connection = null;
|
||||
var executeSql = function(sql, callback) {
|
||||
connection.execute(
|
||||
sql,
|
||||
function(err) {
|
||||
should.not.exist(err);
|
||||
return callback();
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
before(function(done) {
|
||||
oracledb.getConnection(dbConfig, function(err, conn) {
|
||||
should.not.exist(err);
|
||||
connection = conn;
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
after(function(done) {
|
||||
connection.release( function(err) {
|
||||
should.not.exist(err);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
var doTest = function(table_name, proc_name, dbColType, content, bindType, nullBind, callback) {
|
||||
async.series([
|
||||
function(cb) {
|
||||
var bindVar = { c: { val: content, type: bindType, dir: oracledb.BIND_IN } };
|
||||
inBind(table_name, procPre, dbColType, bindVar, bindType, nullBind, cb);
|
||||
},
|
||||
function(cb) {
|
||||
var bindVar =[ { val: content, type: bindType, dir: oracledb.BIND_IN } ];
|
||||
inBind(table_name, procPre, dbColType, bindVar, bindType, nullBind, cb);
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
||||
var inBind = function(table_name, proc_name, dbColType, bindVar, bindType, nullBind, callback) {
|
||||
var createTable = sql.createTable(table_name, dbColType);
|
||||
var drop_table = "DROP TABLE " + table_name + " PURGE";
|
||||
var proc = "CREATE OR REPLACE PROCEDURE " + proc_name + " (inValue IN " + dbColType + ")\n" +
|
||||
"AS \n" +
|
||||
"BEGIN \n" +
|
||||
" insert into " + table_name + " ( content ) values (inValue); \n" +
|
||||
"END " + proc_name + "; ";
|
||||
var sqlRun = "BEGIN " + proc_name + " (:c); END;";
|
||||
var proc_drop = "DROP PROCEDURE " + proc_name;
|
||||
async.series([
|
||||
function(cb) {
|
||||
executeSql(createTable, cb);
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(proc, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
bindVar,
|
||||
function(err) {
|
||||
if(bindType === oracledb.STRING) {
|
||||
compareErrMsgForString(nullBind, dbColType, err);
|
||||
} else {
|
||||
compareErrMsgForRAW(dbColType, err);
|
||||
}
|
||||
cb();
|
||||
}
|
||||
);
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(proc_drop, cb);
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(drop_table, cb);
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
||||
var compareErrMsgForString = function(nullBind, element, err) {
|
||||
if(element === "BLOB") {
|
||||
// ORA-06550: line 1, column 7:
|
||||
// PLS-00306: wrong number or types of arguments in call to 'NODB_INBIND_XX'
|
||||
// ORA-06550: line 1, column 7:
|
||||
// PL/SQL: Statement ignored
|
||||
(err.message).should.startWith('ORA-06550:');
|
||||
} else {
|
||||
if(nullBind === true) {
|
||||
should.not.exist(err);
|
||||
} else {
|
||||
if(element.indexOf("CHAR") > -1 || element === "CLOB") {
|
||||
should.not.exist(err);
|
||||
}
|
||||
if(element.indexOf("FLOAT") > -1 || element === "NUMBER" || element.indexOf("RAW") > -1) {
|
||||
// FLOAT ORA-06502: PL/SQL: numeric or value error: character to number conversion error
|
||||
// BINARY_FLOAT ORA-06502: PL/SQL: numeric or value error
|
||||
// NUMBER: ORA-06502: PL/SQL: numeric or value error: character to number conversion error
|
||||
// RAW: ORA-06502: PL/SQL: numeric or value error: hex to raw conversion error
|
||||
(err.message).should.startWith('ORA-06502:');
|
||||
}
|
||||
if(element === "BINARY_DOUBLE") {
|
||||
// ORA-01847: ORA-06502: PL/SQL: numeric or value error
|
||||
(err.message).should.startWith('ORA-06502:');
|
||||
}
|
||||
if(element === "DATE" || element === "TIMESTAMP") {
|
||||
// ORA-01858: a non-numeric character was found where a numeric was expected
|
||||
(err.message).should.startWith('ORA-01858:');
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var compareErrMsgForRAW = function(element, err) {
|
||||
if(element === "NUMBER" || element.indexOf("FLOAT") > -1 || element === "BINARY_DOUBLE" || element === "DATE" || element === "TIMESTAMP" || element === "CLOB") {
|
||||
// ORA-06550: line 1, column 7:
|
||||
// PLS-00306: wrong number or types of arguments in call to 'NODB_INBIND_XX'
|
||||
// ORA-06550: line 1, column 7:
|
||||
// PL/SQL: Statement ignored
|
||||
(err.message).should.startWith('ORA-06550:');
|
||||
}
|
||||
if(element.indexOf("CHAR") > -1 || element.indexOf("RAW") > -1 || element === "BLOB") {
|
||||
should.not.exist(err);
|
||||
}
|
||||
};
|
||||
|
||||
var tableNamePre = "table_93";
|
||||
var procPre = "proc_93";
|
||||
var index = 0;
|
||||
|
||||
describe('93.1 PLSQL procedure: bind in small value of oracledb.STRING/BUFFER', function() {
|
||||
|
||||
it('93.1.1 oracledb.STRING <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.1.2 oracledb.STRING <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.1.3 oracledb.STRING <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.1.4 oracledb.STRING <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.1.5 oracledb.STRING <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.1.6 oracledb.STRING <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.1.7 oracledb.STRING <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.1.8 oracledb.STRING <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.1.9 oracledb.STRING <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.1.10 oracledb.STRING <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.1.11 oracledb.STRING <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.1.12 oracledb.STRING <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.1.13 oracledb.BUFFER <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.1.14 oracledb.BUFFER <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.1.15 oracledb.BUFFER <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.1.16 oracledb.BUFFER <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.1.17 oracledb.BUFFER <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.1.18 oracledb.BUFFER <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.1.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.1.20 oracledb.BUFFER <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.1.21 oracledb.BUFFER <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.1.22 oracledb.BUFFER <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.1.23 oracledb.BUFFER <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.1.24 oracledb.BUFFER <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
});
|
||||
|
||||
describe('93.2 PLSQL procedure: bind in null value of oracledb.STRING/BUFFER', function() {
|
||||
|
||||
it('93.2.1 oracledb.STRING <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.2.2 oracledb.STRING <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.2.3 oracledb.STRING <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.2.4 oracledb.STRING <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.2.5 oracledb.STRING <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.2.6 oracledb.STRING <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.2.7 oracledb.STRING <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.2.8 oracledb.STRING <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.2.9 oracledb.STRING <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.2.10 oracledb.STRING <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.2.11 oracledb.STRING <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.2.12 oracledb.STRING <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.2.13 oracledb.BUFFER <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.2.14 oracledb.BUFFER <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.2.15 oracledb.BUFFER <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.2.16 oracledb.BUFFER <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.2.17 oracledb.BUFFER <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.2.18 oracledb.BUFFER <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.2.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.2.20 oracledb.BUFFER <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.2.21 oracledb.BUFFER <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.2.22 oracledb.BUFFER <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.2.23 oracledb.BUFFER <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
|
||||
it('93.2.24 oracledb.BUFFER <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, dbColType, content, bindType, nullBind, done);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
|
@ -0,0 +1,723 @@
|
|||
/* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. */
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* You may not use the identified files except in compliance with the Apache
|
||||
* License, Version 2.0 (the "License.")
|
||||
*
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* The node-oracledb test suite uses 'mocha', 'should' and 'async'.
|
||||
* See LICENSE.md for relevant licenses.
|
||||
*
|
||||
* NAME
|
||||
* 94. binding_procedureBindInout.js
|
||||
*
|
||||
* DESCRIPTION
|
||||
* This suite tests the data binding, including:
|
||||
* Test cases bind inout oracledb type STRING/BUFFER to all db column types using plsql procedure
|
||||
* The cases take small/null bind values.
|
||||
*
|
||||
* NUMBERING RULE
|
||||
* Test numbers follow this numbering rule:
|
||||
* 1 - 20 are reserved for basic functional tests
|
||||
* 21 - 50 are reserved for data type supporting tests
|
||||
* 51 onwards are for other tests
|
||||
*
|
||||
*****************************************************************************/
|
||||
'use strict';
|
||||
|
||||
var oracledb = require('oracledb');
|
||||
var should = require('should');
|
||||
var async = require('async');
|
||||
var sql = require('./sql.js');
|
||||
var dbConfig = require('./dbconfig.js');
|
||||
var assist = require('./dataTypeAssist.js');
|
||||
|
||||
describe('94.binding_procedureBindInout.js', function() {
|
||||
this.timeout(5000);
|
||||
var connection = null;
|
||||
var executeSql = function(sql, callback) {
|
||||
connection.execute(
|
||||
sql,
|
||||
function(err) {
|
||||
should.not.exist(err);
|
||||
return callback();
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
before(function(done) {
|
||||
oracledb.getConnection(dbConfig, function(err, conn) {
|
||||
should.not.exist(err);
|
||||
connection = conn;
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
after(function(done) {
|
||||
connection.release( function(err) {
|
||||
should.not.exist(err);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
var doTest = function(table_name, procPre, bindType, dbColType, content, sequence, nullBind, callback) {
|
||||
async.series([
|
||||
function(cb) {
|
||||
var bindVar = {
|
||||
i: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c: { val: content, type: bindType, dir: oracledb.BIND_INOUT, maxSize: 1000 }
|
||||
};
|
||||
inBind(table_name, procPre, dbColType, bindVar, bindType, nullBind, cb);
|
||||
},
|
||||
function(cb) {
|
||||
var bindVar =[ sequence, { val: content, type: bindType, dir: oracledb.BIND_INOUT, maxSize: 1000 } ];
|
||||
inBind(table_name, procPre, dbColType, bindVar, bindType, nullBind, cb);
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
||||
var inBind = function(table_name, proc_name, dbColType, bindVar, bindType, nullBind, callback) {
|
||||
var createTable = sql.createTable(table_name, dbColType);
|
||||
var drop_table = "DROP TABLE " + table_name + " PURGE";
|
||||
var proc = "CREATE OR REPLACE PROCEDURE " + proc_name + " (ID IN NUMBER, inValue IN OUT " + dbColType + ")\n" +
|
||||
"AS \n" +
|
||||
"BEGIN \n" +
|
||||
" insert into " + table_name + " ( id, content ) values (ID, inValue); \n" +
|
||||
" select content into inValue from " + table_name + " where id = ID; \n" +
|
||||
"END " + proc_name + "; ";
|
||||
var sqlRun = "BEGIN " + proc_name + " (:i, :c); END;";
|
||||
var proc_drop = "DROP PROCEDURE " + proc_name;
|
||||
// console.log(proc);
|
||||
async.series([
|
||||
function(cb) {
|
||||
executeSql(createTable, cb);
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(proc, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
bindVar,
|
||||
function(err) {
|
||||
if(bindType === oracledb.STRING) {
|
||||
compareErrMsgForString(nullBind, dbColType, err);
|
||||
} else {
|
||||
compareErrMsgForRAW(nullBind, dbColType, err);
|
||||
}
|
||||
cb();
|
||||
}
|
||||
);
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(proc_drop, cb);
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(drop_table, cb);
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
||||
var compareErrMsgForString = function(nullBind, element, err) {
|
||||
if(element === "BLOB") {
|
||||
// ORA-06550: line 1, column 7:
|
||||
// PLS-00306: wrong number or types of arguments in call to 'NODB_INBIND_XX'
|
||||
// ORA-06550: line 1, column 7:
|
||||
// PL/SQL: Statement ignored
|
||||
(err.message).should.startWith('ORA-06550:');
|
||||
} else {
|
||||
if(nullBind === true) {
|
||||
should.not.exist(err);
|
||||
} else {
|
||||
if(element.indexOf("CHAR") > -1 || element === "CLOB") {
|
||||
should.not.exist(err);
|
||||
}
|
||||
if(element.indexOf("FLOAT") > -1 || element === "NUMBER" || element.indexOf("RAW") > -1) {
|
||||
// FLOAT ORA-06502: PL/SQL: numeric or value error: character to number conversion error
|
||||
// BINARY_FLOAT ORA-06502: PL/SQL: numeric or value error
|
||||
// NUMBER: ORA-06502: PL/SQL: numeric or value error: character to number conversion error
|
||||
// RAW: ORA-06502: PL/SQL: numeric or value error: hex to raw conversion error
|
||||
(err.message).should.startWith('ORA-06502:');
|
||||
}
|
||||
if(element === "BINARY_DOUBLE") {
|
||||
// ORA-01847: ORA-06502: PL/SQL: numeric or value error
|
||||
(err.message).should.startWith('ORA-06502:');
|
||||
}
|
||||
if(element === "DATE" || element === "TIMESTAMP") {
|
||||
// ORA-01858: a non-numeric character was found where a numeric was expected
|
||||
(err.message).should.startWith('ORA-01858:');
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var compareErrMsgForRAW = function(nullBind, element, err) {
|
||||
if(element === "NUMBER" || element.indexOf("FLOAT") > -1 || element === "BINARY_DOUBLE" || element === "DATE" || element === "TIMESTAMP" || element === "CLOB") {
|
||||
// ORA-06550: line 1, column 7:
|
||||
// PLS-00306: wrong number or types of arguments in call to 'NODB_INBIND_XX'
|
||||
// ORA-06550: line 1, column 7:
|
||||
// PL/SQL: Statement ignored
|
||||
(err.message).should.startWith('ORA-06550:');
|
||||
}
|
||||
if(element.indexOf("RAW") > -1 || element === "BLOB" || element === "VARCHAR2") {
|
||||
should.not.exist(err);
|
||||
}
|
||||
if(element === "NCHAR" || element === "CHAR") {
|
||||
if(nullBind === true) {
|
||||
should.not.exist(err);
|
||||
} else {
|
||||
// ORA-06502: PL/SQL: numeric or value error: raw variable length too long
|
||||
(err.message).should.startWith('ORA-06502:');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var tableNamePre = "table_94";
|
||||
var procPre = "proc_94";
|
||||
var index = 1;
|
||||
|
||||
describe('94.1 PLSQL procedure: bind inout small value of oracledb.STRING/BUFFER', function() {
|
||||
|
||||
it('94.1.1 oracledb.STRING <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.1.2 oracledb.STRING <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.1.3 oracledb.STRING <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.1.4 oracledb.STRING <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.1.5 oracledb.STRING <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.1.6 oracledb.STRING <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.1.7 oracledb.STRING <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.1.8 oracledb.STRING <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.1.9 oracledb.STRING <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.1.10 oracledb.STRING <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.1.11 oracledb.STRING <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.1.12 oracledb.STRING <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.1.13 oracledb.BUFFER <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.1.14 oracledb.BUFFER <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.1.15 oracledb.BUFFER <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.1.16 oracledb.BUFFER <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.1.17 oracledb.BUFFER <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.1.18 oracledb.BUFFER <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.1.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.1.20 oracledb.BUFFER <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.1.21 oracledb.BUFFER <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.1.22 oracledb.BUFFER <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.1.23 oracledb.BUFFER <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.1.24 oracledb.BUFFER <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
});
|
||||
|
||||
describe('94.2 PLSQL procedure: bind inout null value of oracledb.STRING/BUFFER', function() {
|
||||
|
||||
it('94.2.1 oracledb.STRING <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.2.2 oracledb.STRING <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.2.3 oracledb.STRING <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.2.4 oracledb.STRING <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.2.5 oracledb.STRING <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.2.6 oracledb.STRING <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.2.7 oracledb.STRING <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.2.8 oracledb.STRING <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.2.9 oracledb.STRING <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.2.10 oracledb.STRING <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.2.11 oracledb.STRING <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.2.12 oracledb.STRING <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.2.13 oracledb.BUFFER <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.2.14 oracledb.BUFFER <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.2.15 oracledb.BUFFER <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.2.16 oracledb.BUFFER <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.2.17 oracledb.BUFFER <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.2.18 oracledb.BUFFER <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.2.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.2.20 oracledb.BUFFER <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.2.21 oracledb.BUFFER <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.2.22 oracledb.BUFFER <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.2.23 oracledb.BUFFER <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('94.2.24 oracledb.BUFFER <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
|
@ -0,0 +1,738 @@
|
|||
/* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. */
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* You may not use the identified files except in compliance with the Apache
|
||||
* License, Version 2.0 (the "License.")
|
||||
*
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* The node-oracledb test suite uses 'mocha', 'should' and 'async'.
|
||||
* See LICENSE.md for relevant licenses.
|
||||
*
|
||||
* NAME
|
||||
* 96. binding_procedureBindOut.js
|
||||
*
|
||||
* DESCRIPTION
|
||||
* This suite tests the data binding, including:
|
||||
* Test cases get oracledb type STRING/BUFFER from all db column types using plsql procedure
|
||||
* The cases take small/null bind values.
|
||||
*
|
||||
* NUMBERING RULE
|
||||
* Test numbers follow this numbering rule:
|
||||
* 1 - 20 are reserved for basic functional tests
|
||||
* 21 - 50 are reserved for data type supporting tests
|
||||
* 51 onwards are for other tests
|
||||
*
|
||||
*****************************************************************************/
|
||||
'use strict';
|
||||
|
||||
var oracledb = require('oracledb');
|
||||
var should = require('should');
|
||||
var async = require('async');
|
||||
var sql = require('./sql.js');
|
||||
var dbConfig = require('./dbconfig.js');
|
||||
var assist = require('./dataTypeAssist.js');
|
||||
|
||||
describe('96.binding_procedureBindOut.js', function() {
|
||||
this.timeout(5000);
|
||||
var connection = null;
|
||||
var executeSql = function(sql, callback) {
|
||||
connection.execute(
|
||||
sql,
|
||||
function(err) {
|
||||
should.not.exist(err);
|
||||
return callback();
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
before(function(done) {
|
||||
oracledb.getConnection(dbConfig, function(err, conn) {
|
||||
should.not.exist(err);
|
||||
connection = conn;
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
after(function(done) {
|
||||
connection.release( function(err) {
|
||||
should.not.exist(err);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
var doTest = function(table_name, procName, bindType, dbColType, content, sequence, nullBind, callback) {
|
||||
async.series([
|
||||
function(cb) {
|
||||
var bindVar = {
|
||||
i: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c: { val: content, type: bindType, dir: oracledb.BIND_OUT, maxSize: 1000 }
|
||||
};
|
||||
inBind(table_name, procName, sequence, dbColType, bindVar, bindType, nullBind, cb);
|
||||
},
|
||||
function(cb) {
|
||||
var bindVar =[ sequence, { val: content, type: bindType, dir: oracledb.BIND_OUT, maxSize: 1000 } ];
|
||||
inBind(table_name, procName, sequence, dbColType, bindVar, bindType, nullBind, cb);
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
||||
var getInsertVal = function(element, nullBind) {
|
||||
var insertValue = [];
|
||||
if(element.indexOf("CHAR") > -1 || element === "CLOB") {
|
||||
insertValue[0] = (nullBind===true) ? null : "abcsca";
|
||||
insertValue[1] = oracledb.STRING;
|
||||
}
|
||||
if(element === "BINARY_DOUBLE" || element.indexOf("FLOAT") > -1 || element === "NUMBER") {
|
||||
insertValue[0] = (nullBind===true) ? null : 1;
|
||||
insertValue[1] = oracledb.NUMBER;
|
||||
}
|
||||
if(element === "TIMESTAMP" || element === "DATE") {
|
||||
insertValue[0] = (nullBind===true) ? null : new Date(0);
|
||||
insertValue[1] = oracledb.DATE;
|
||||
}
|
||||
if(element === "BLOB" || element.indexOf("RAW") > -1 ) {
|
||||
insertValue[0] = (nullBind===true) ? null : assist.createBuffer(100);
|
||||
insertValue[1] = oracledb.BUFFER;
|
||||
}
|
||||
return insertValue;
|
||||
};
|
||||
|
||||
var inBind = function(table_name, proc_name, sequence, dbColType, bindVar, bindType, nullBind, callback) {
|
||||
var createTable = sql.createTable(table_name, dbColType);
|
||||
var drop_table = "DROP TABLE " + table_name + " PURGE";
|
||||
var proc = "CREATE OR REPLACE PROCEDURE " + proc_name + " (ID IN NUMBER, inValue OUT " + dbColType + ")\n" +
|
||||
"AS \n" +
|
||||
"BEGIN \n" +
|
||||
" select content into inValue from " + table_name + " where id = ID; \n" +
|
||||
"END " + proc_name + "; ";
|
||||
var sqlRun = "BEGIN " + proc_name + " (:i, :c); END;";
|
||||
var proc_drop = "DROP PROCEDURE " + proc_name;
|
||||
// console.log(proc);
|
||||
var inserted = getInsertVal(dbColType, nullBind);
|
||||
var insertSql = "insert into " + table_name + " (id, content) values (:c1, :c2)";
|
||||
async.series([
|
||||
function(cb) {
|
||||
executeSql(createTable, cb);
|
||||
},
|
||||
function(cb) {
|
||||
var bind = {
|
||||
c1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c2: { val: inserted[0], type: inserted[1], dir: oracledb.BIND_IN }
|
||||
};
|
||||
connection.execute(
|
||||
insertSql,
|
||||
bind,
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
should.strictEqual(result.rowsAffected, 1);
|
||||
cb();
|
||||
});
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(proc, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
bindVar,
|
||||
function(err) {
|
||||
if(bindType === oracledb.STRING) {
|
||||
compareErrMsgForString(dbColType, err);
|
||||
} else {
|
||||
compareErrMsgForRAW(nullBind, dbColType, err);
|
||||
}
|
||||
cb();
|
||||
}
|
||||
);
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(proc_drop, cb);
|
||||
},
|
||||
function(cb) {
|
||||
executeSql(drop_table, cb);
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
||||
var compareErrMsgForString = function(element, err) {
|
||||
if(element === "BLOB") {
|
||||
// ORA-06550: line 1, column 7:
|
||||
// PLS-00306: wrong number or types of arguments in call to 'NODB_INBIND_XX'
|
||||
// ORA-06550: line 1, column 7:
|
||||
// PL/SQL: Statement ignored
|
||||
(err.message).should.startWith('ORA-06550:');
|
||||
} else {
|
||||
should.not.exist(err);
|
||||
}
|
||||
};
|
||||
|
||||
var compareErrMsgForRAW = function(nullBind, element, err) {
|
||||
if(element === "NUMBER" || element.indexOf("FLOAT") > -1 || element === "BINARY_DOUBLE" || element === "DATE" || element === "TIMESTAMP" || element === "CLOB") {
|
||||
// ORA-06550: line 1, column 7:
|
||||
// PLS-00306: wrong number or types of arguments in call to 'NODB_INBIND_XX'
|
||||
// ORA-06550: line 1, column 7:
|
||||
// PL/SQL: Statement ignored
|
||||
(err.message).should.startWith('ORA-06550:');
|
||||
}
|
||||
if(element.indexOf("RAW") > -1 || element === "BLOB") {
|
||||
should.not.exist(err);
|
||||
}
|
||||
if(element.indexOf("CHAR") > -1) {
|
||||
if(nullBind===true) {
|
||||
should.not.exist(err);
|
||||
} else {
|
||||
// ORA-06502: PL/SQL: numeric or value error: hex to raw conversion error
|
||||
(err.message).should.startWith('ORA-06502:');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var tableNamePre = "table_95";
|
||||
var procPre = "proc_95";
|
||||
var index = 1;
|
||||
|
||||
describe('96.1 PLSQL procedure: bind out small value to oracledb.STRING/BUFFER', function() {
|
||||
|
||||
it('96.1.1 oracledb.STRING <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.1.2 oracledb.STRING <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.1.3 oracledb.STRING <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.1.4 oracledb.STRING <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.1.5 oracledb.STRING <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.1.6 oracledb.STRING <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.1.7 oracledb.STRING <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.1.8 oracledb.STRING <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.1.9 oracledb.STRING <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.1.10 oracledb.STRING <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.1.11 oracledb.STRING <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.1.12 oracledb.STRING <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = "small string";
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.1.13 oracledb.BUFFER <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.1.14 oracledb.BUFFER <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.1.15 oracledb.BUFFER <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.1.16 oracledb.BUFFER <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.1.17 oracledb.BUFFER <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.1.18 oracledb.BUFFER <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.1.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.1.20 oracledb.BUFFER <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.1.21 oracledb.BUFFER <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.1.22 oracledb.BUFFER <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.1.23 oracledb.BUFFER <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.1.24 oracledb.BUFFER <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = assist.createBuffer(100);
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = false;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
});
|
||||
|
||||
describe('96.2 PLSQL procedure: bind out null value to oracledb.STRING/BUFFER', function() {
|
||||
|
||||
it('96.2.1 oracledb.STRING <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.2.2 oracledb.STRING <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.2.3 oracledb.STRING <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.2.4 oracledb.STRING <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.2.5 oracledb.STRING <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.2.6 oracledb.STRING <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.2.7 oracledb.STRING <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.2.8 oracledb.STRING <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.2.9 oracledb.STRING <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.2.10 oracledb.STRING <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.2.11 oracledb.STRING <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.2.12 oracledb.STRING <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.STRING;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.2.13 oracledb.BUFFER <--> DB: NUMBER', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NUMBER";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.2.14 oracledb.BUFFER <--> DB: CHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.2.15 oracledb.BUFFER <--> DB: NCHAR', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "NCHAR";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.2.16 oracledb.BUFFER <--> DB: VARCHAR2', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "VARCHAR2";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.2.17 oracledb.BUFFER <--> DB: FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.2.18 oracledb.BUFFER <--> DB: BINARY_FLOAT', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_FLOAT";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.2.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BINARY_DOUBLE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.2.20 oracledb.BUFFER <--> DB: DATE', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "DATE";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.2.21 oracledb.BUFFER <--> DB: TIMESTAMP', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "TIMESTAMP";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.2.22 oracledb.BUFFER <--> DB: RAW', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "RAW";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.2.23 oracledb.BUFFER <--> DB: CLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "CLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
|
||||
it('96.2.24 oracledb.BUFFER <--> DB: BLOB', function(done) {
|
||||
index++;
|
||||
var table_name = tableNamePre + index;
|
||||
var proc_name = procPre + index;
|
||||
var content = null;
|
||||
var bindType = oracledb.BUFFER;
|
||||
var dbColType = "BLOB";
|
||||
var nullBind = true;
|
||||
doTest(table_name, proc_name, bindType, dbColType, content, index, nullBind, done);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved. */
|
||||
/* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved. */
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
|
@ -24,10 +24,6 @@
|
|||
* DESCRIPTION
|
||||
* Testing Oracle data type support - BINARY_DOUBLE.
|
||||
*
|
||||
* NOTE
|
||||
* BINARY_DOUBLE support is still under enhancement.
|
||||
* There is precision issue. This test is suspended.
|
||||
*
|
||||
* NUMBERING RULE
|
||||
* Test numbers follow this numbering rule:
|
||||
* 1 - 20 are reserved for basic functional tests
|
||||
|
|
|
@ -0,0 +1,731 @@
|
|||
/* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. */
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* You may not use the identified files except in compliance with the Apache
|
||||
* License, Version 2.0 (the "License.")
|
||||
*
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* The node-oracledb test suite uses 'mocha', 'should' and 'async'.
|
||||
* See LICENSE.md for relevant licenses.
|
||||
*
|
||||
* NAME
|
||||
* 91. fetchBlobAsBuffer4.js
|
||||
*
|
||||
* DESCRIPTION
|
||||
* Testing BLOB binding out as Buffer.
|
||||
*
|
||||
* NUMBERING RULElist
|
||||
* Test numbers follow this numbering rule:
|
||||
* 1 - 20 are reserved for basic functional tests
|
||||
* 21 - 50 are reserved for data type supporting tests
|
||||
* 51 onwards are for other tests
|
||||
*
|
||||
*****************************************************************************/
|
||||
'use strict';
|
||||
|
||||
var oracledb = require('oracledb');
|
||||
var should = require('should');
|
||||
var async = require('async');
|
||||
var dbConfig = require('./dbconfig.js');
|
||||
var random = require('./random.js');
|
||||
var assist = require('./dataTypeAssist.js');
|
||||
|
||||
describe('91. fetchBlobAsBuffer4.js', function() {
|
||||
this.timeout(100000);
|
||||
|
||||
var connection = null;
|
||||
var insertID = 1; // assume id for insert into db starts from 1
|
||||
var node6plus = false; // assume node runtime version is lower than 6
|
||||
var proc_blob_in_tab = "BEGIN \n" +
|
||||
" DECLARE \n" +
|
||||
" e_table_missing EXCEPTION; \n" +
|
||||
" PRAGMA EXCEPTION_INIT(e_table_missing, -00942); \n" +
|
||||
" BEGIN \n" +
|
||||
" EXECUTE IMMEDIATE('DROP TABLE nodb_blob_1 PURGE'); \n" +
|
||||
" EXCEPTION \n" +
|
||||
" WHEN e_table_missing \n" +
|
||||
" THEN NULL; \n" +
|
||||
" END; \n" +
|
||||
" EXECUTE IMMEDIATE (' \n" +
|
||||
" CREATE TABLE nodb_blob_1 ( \n" +
|
||||
" num_1 NUMBER, \n" +
|
||||
" num_2 NUMBER, \n" +
|
||||
" content RAW(2000), \n" +
|
||||
" blob BLOB \n" +
|
||||
" ) \n" +
|
||||
" '); \n" +
|
||||
"END; ";
|
||||
|
||||
before(function(done) {
|
||||
async.series([
|
||||
function(cb) {
|
||||
oracledb.getConnection(dbConfig, function(err, conn) {
|
||||
should.not.exist(err);
|
||||
connection = conn;
|
||||
if(process.versions["node"].substring(0,1) >= "6")
|
||||
node6plus = true;
|
||||
cb();
|
||||
});
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
proc_blob_in_tab,
|
||||
function(err) {
|
||||
should.not.exist(err);
|
||||
cb();
|
||||
});
|
||||
}
|
||||
], done);
|
||||
|
||||
}); // before
|
||||
|
||||
after(function(done) {
|
||||
async.series([
|
||||
function(cb) {
|
||||
oracledb.fetchAsBuffer = [];
|
||||
connection.execute(
|
||||
"DROP TABLE nodb_blob_1 PURGE",
|
||||
function(err) {
|
||||
should.not.exist(err);
|
||||
cb();
|
||||
});
|
||||
},
|
||||
function(cb) {
|
||||
connection.release(function(err) {
|
||||
should.not.exist(err);
|
||||
cb();
|
||||
});
|
||||
}
|
||||
], done);
|
||||
|
||||
}); // after
|
||||
|
||||
var executeSQL = function(sql, callback) {
|
||||
connection.execute(
|
||||
sql,
|
||||
function(err) {
|
||||
should.not.exist(err);
|
||||
return callback();
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
var insertTable = function(sql, bindVar, callback) {
|
||||
connection.execute(
|
||||
sql,
|
||||
bindVar,
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
should.strictEqual(result.rowsAffected, 1);
|
||||
callback();
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
describe('91.1 PLSQL FUNCTION RETURN BLOB to BUFFER', function() {
|
||||
|
||||
beforeEach('set oracledb.fetchAsBuffer', function(done) {
|
||||
oracledb.fetchAsBuffer = [ oracledb.BLOB ];
|
||||
done();
|
||||
}); // beforeEach
|
||||
|
||||
afterEach('clear the By type specification', function(done) {
|
||||
oracledb.fetchAsBuffer = [];
|
||||
done();
|
||||
}); // afterEach
|
||||
|
||||
it('91.1.1 bind by position - 1', function(done) {
|
||||
var proc = "CREATE OR REPLACE FUNCTION nodb_blobs_out_94 (ID_1 IN NUMBER, ID_2 IN NUMBER, C IN RAW) RETURN BLOB \n" +
|
||||
"IS \n" +
|
||||
" tmpLOB4 BLOB; \n" +
|
||||
"BEGIN \n" +
|
||||
" select blob into tmpLOB4 from nodb_blob_1 where num_1 = ID_1;\n" +
|
||||
" RETURN tmpLOB4; \n" +
|
||||
"END;";
|
||||
var sqlRun = "begin :output := nodb_blobs_out_94 (:i1, :i2, :i3); end;";
|
||||
var proc_drop = "DROP FUNCTION nodb_blobs_out_94";
|
||||
|
||||
var len = 400;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "91.1.1";
|
||||
var strBuf = random.getRandomString(len, specialStr);
|
||||
var content = node6plus ? Buffer.from(strBuf, "utf-8") : new Buffer(strBuf, "utf-8");
|
||||
|
||||
async.series([
|
||||
function(cb) {
|
||||
executeSQL(proc, cb);
|
||||
},
|
||||
function(cb) {
|
||||
var sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)";
|
||||
var bindVar = {
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len },
|
||||
c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }
|
||||
};
|
||||
insertTable(sql, bindVar, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
[ { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len }, sequence, null, content ],
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds[0];
|
||||
var compareBuffer = assist.compare2Buffers(content, resultVal);
|
||||
should.strictEqual(compareBuffer, true);
|
||||
cb();
|
||||
}
|
||||
);
|
||||
},
|
||||
function(cb) {
|
||||
executeSQL(proc_drop, cb);
|
||||
}
|
||||
], done);
|
||||
}); // 91.1.1
|
||||
|
||||
it('91.1.2 bind by name - 1', function(done) {
|
||||
var proc = "CREATE OR REPLACE FUNCTION nodb_blobs_out_94 (ID_1 IN NUMBER, ID_2 IN NUMBER, C IN RAW) RETURN BLOB \n" +
|
||||
"IS \n" +
|
||||
" tmpLOB4 BLOB; \n" +
|
||||
"BEGIN \n" +
|
||||
" select blob into tmpLOB4 from nodb_blob_1 where num_1 = ID_1;\n" +
|
||||
" RETURN tmpLOB4; \n" +
|
||||
"END;";
|
||||
var sqlRun = "begin :output := nodb_blobs_out_94 (:i1, :i2, :c); end;";
|
||||
var proc_drop = "DROP FUNCTION nodb_blobs_out_94";
|
||||
|
||||
var len = 400;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "91.1.2";
|
||||
var strBuf = random.getRandomString(len, specialStr);
|
||||
var content = node6plus ? Buffer.from(strBuf, "utf-8") : new Buffer(strBuf, "utf-8");
|
||||
|
||||
async.series([
|
||||
function(cb) {
|
||||
executeSQL(proc, cb);
|
||||
},
|
||||
function(cb) {
|
||||
var sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)";
|
||||
var bindVar = {
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len },
|
||||
c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }
|
||||
};
|
||||
insertTable(sql, bindVar, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
{
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: null, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN },
|
||||
output: { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len }
|
||||
},
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds.output;
|
||||
var compareBuffer = assist.compare2Buffers(resultVal, content);
|
||||
should.strictEqual(compareBuffer, true);
|
||||
cb();
|
||||
}
|
||||
);
|
||||
},
|
||||
function(cb) {
|
||||
executeSQL(proc_drop, cb);
|
||||
}
|
||||
], done);
|
||||
}); // 91.1.2
|
||||
|
||||
it('91.1.3 bind by position - 2', function(done) {
|
||||
var proc = "CREATE OR REPLACE FUNCTION nodb_blobs_out_94 (ID_1 IN NUMBER, ID_2 IN NUMBER, C IN RAW) RETURN BLOB \n" +
|
||||
"IS \n" +
|
||||
" tmpLOB4 BLOB; \n" +
|
||||
"BEGIN \n" +
|
||||
" select blob into tmpLOB4 from nodb_blob_1 where num_1 = ID_1;\n" +
|
||||
" RETURN tmpLOB4; \n" +
|
||||
"END;";
|
||||
var sqlRun = "begin :output := nodb_blobs_out_94 (:i1, :i2, :c); end;";
|
||||
var proc_drop = "DROP FUNCTION nodb_blobs_out_94";
|
||||
|
||||
var len = 400;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "91.1.3";
|
||||
var strBuf = random.getRandomString(len, specialStr);
|
||||
var content = node6plus ? Buffer.from(strBuf, "utf-8") : new Buffer(strBuf, "utf-8");
|
||||
|
||||
async.series([
|
||||
function(cb) {
|
||||
executeSQL(proc, cb);
|
||||
},
|
||||
function(cb) {
|
||||
var sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)";
|
||||
var bindVar = {
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len },
|
||||
c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }
|
||||
};
|
||||
insertTable(sql, bindVar, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
[ { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len }, sequence, sequence, null ],
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds[0];
|
||||
var compareBuffer = assist.compare2Buffers(resultVal, content);
|
||||
should.strictEqual(compareBuffer, true);
|
||||
cb();
|
||||
}
|
||||
);
|
||||
},
|
||||
function(cb) {
|
||||
executeSQL(proc_drop, cb);
|
||||
}
|
||||
], done);
|
||||
}); // 91.1.3
|
||||
|
||||
it('91.1.4 bind by name - 2', function(done) {
|
||||
var proc = "CREATE OR REPLACE FUNCTION nodb_blobs_out_94 (ID_1 IN NUMBER, ID_2 IN NUMBER, C IN RAW) RETURN BLOB \n" +
|
||||
"IS \n" +
|
||||
" tmpLOB4 BLOB; \n" +
|
||||
"BEGIN \n" +
|
||||
" select blob into tmpLOB4 from nodb_blob_1 where num_1 = ID_1;\n" +
|
||||
" RETURN tmpLOB4; \n" +
|
||||
"END;";
|
||||
var sqlRun = "begin :output := nodb_blobs_out_94 (:i1, :i2, :c); end;";
|
||||
var proc_drop = "DROP FUNCTION nodb_blobs_out_94";
|
||||
|
||||
var len = 400;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "91.1.4";
|
||||
var strBuf = random.getRandomString(len, specialStr);
|
||||
var content = node6plus ? Buffer.from(strBuf, "utf-8") : new Buffer(strBuf, "utf-8");
|
||||
|
||||
async.series([
|
||||
function(cb) {
|
||||
executeSQL(proc, cb);
|
||||
},
|
||||
function(cb) {
|
||||
var sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)";
|
||||
var bindVar = {
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len },
|
||||
c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }
|
||||
};
|
||||
insertTable(sql, bindVar, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
{
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c: { val: null, type: oracledb.BUFFER, dir: oracledb.BIND_IN },
|
||||
output: { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len }
|
||||
},
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds.output;
|
||||
var compareBuffer = assist.compare2Buffers(resultVal, content);
|
||||
should.strictEqual(compareBuffer, true);
|
||||
cb();
|
||||
}
|
||||
);
|
||||
},
|
||||
function(cb) {
|
||||
executeSQL(proc_drop, cb);
|
||||
}
|
||||
], done);
|
||||
}); // 91.1.4
|
||||
|
||||
}); // 91.1
|
||||
|
||||
describe('91.2 PLSQL PROCEDURE BIND OUT BLOB to BUFFER', function() {
|
||||
var proc = "CREATE OR REPLACE PROCEDURE nodb_blobs_out_92 (ID_1 IN NUMBER, ID_2 IN NUMBER, C1 IN RAW, C2 OUT BLOB) \n" +
|
||||
"AS \n" +
|
||||
"BEGIN \n" +
|
||||
" select blob into C2 from nodb_blob_1 where num_1 = ID_1;\n" +
|
||||
"END;";
|
||||
var sqlRun = "begin nodb_blobs_out_92 (:i1, :i2, :c1, :c2); end;";
|
||||
var proc_drop = "DROP PROCEDURE nodb_blobs_out_92";
|
||||
|
||||
beforeEach('set oracledb.fetchAsBuffer', function(done) {
|
||||
oracledb.fetchAsBuffer = [ oracledb.BLOB ];
|
||||
done();
|
||||
}); // beforeEach
|
||||
|
||||
afterEach('clear the By type specification', function(done) {
|
||||
oracledb.fetchAsBuffer = [];
|
||||
done();
|
||||
}); // afterEach
|
||||
|
||||
it('91.2.1 bind by position - 1', function(done) {
|
||||
var len = 500;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "91.2.1";
|
||||
var strBuf = random.getRandomString(len, specialStr);
|
||||
var content = node6plus ? Buffer.from(strBuf, "utf-8") : new Buffer(strBuf, "utf-8");
|
||||
|
||||
async.series([
|
||||
function(cb) {
|
||||
executeSQL(proc, cb);
|
||||
},
|
||||
function(cb) {
|
||||
var sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)";
|
||||
var bindVar = {
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len },
|
||||
c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }
|
||||
};
|
||||
insertTable(sql, bindVar, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
[ sequence, null, content, { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len } ],
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds[0];
|
||||
var compareBuffer = assist.compare2Buffers(resultVal, content);
|
||||
should.strictEqual(compareBuffer, true);
|
||||
cb();
|
||||
}
|
||||
);
|
||||
},
|
||||
function(cb) {
|
||||
executeSQL(proc_drop, cb);
|
||||
}
|
||||
], done);
|
||||
}); // 91.2.1
|
||||
|
||||
it('91.2.2 bind by name - 1', function(done) {
|
||||
var len = 400;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "91.2.2";
|
||||
var strBuf = random.getRandomString(len, specialStr);
|
||||
var content = node6plus ? Buffer.from(strBuf, "utf-8") : new Buffer(strBuf, "utf-8");
|
||||
|
||||
async.series([
|
||||
function(cb) {
|
||||
executeSQL(proc, cb);
|
||||
},
|
||||
function(cb) {
|
||||
var sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)";
|
||||
var bindVar = {
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len },
|
||||
c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }
|
||||
};
|
||||
insertTable(sql, bindVar, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
{
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: null, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN },
|
||||
c2: { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len }
|
||||
},
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds.c2;
|
||||
var compareBuffer = assist.compare2Buffers(resultVal, content);
|
||||
should.strictEqual(compareBuffer, true);
|
||||
cb();
|
||||
}
|
||||
);
|
||||
},
|
||||
function(cb) {
|
||||
executeSQL(proc_drop, cb);
|
||||
}
|
||||
], done);
|
||||
}); // 91.2.2
|
||||
|
||||
it('91.2.3 bind by position - 2', function(done) {
|
||||
var len = 500;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "91.2.3";
|
||||
var strBuf = random.getRandomString(len, specialStr);
|
||||
var content = node6plus ? Buffer.from(strBuf, "utf-8") : new Buffer(strBuf, "utf-8");
|
||||
|
||||
async.series([
|
||||
function(cb) {
|
||||
executeSQL(proc, cb);
|
||||
},
|
||||
function(cb) {
|
||||
var sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)";
|
||||
var bindVar = {
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len },
|
||||
c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }
|
||||
};
|
||||
insertTable(sql, bindVar, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
[ sequence, sequence, null, { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len } ],
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds[0];
|
||||
var compareBuffer = assist.compare2Buffers(resultVal, content);
|
||||
should.strictEqual(compareBuffer, true);
|
||||
cb();
|
||||
}
|
||||
);
|
||||
},
|
||||
function(cb) {
|
||||
executeSQL(proc_drop, cb);
|
||||
}
|
||||
], done);
|
||||
}); // 91.2.3
|
||||
|
||||
it('91.2.4 bind by name - 2', function(done) {
|
||||
var len = 400;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "91.2.4";
|
||||
var strBuf = random.getRandomString(len, specialStr);
|
||||
var content = node6plus ? Buffer.from(strBuf, "utf-8") : new Buffer(strBuf, "utf-8");
|
||||
|
||||
async.series([
|
||||
function(cb) {
|
||||
executeSQL(proc, cb);
|
||||
},
|
||||
function(cb) {
|
||||
var sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)";
|
||||
var bindVar = {
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len },
|
||||
c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }
|
||||
};
|
||||
insertTable(sql, bindVar, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
{
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c1: { val: null, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len },
|
||||
c2: { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len }
|
||||
},
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds.c2;
|
||||
var compareBuffer = assist.compare2Buffers(resultVal, content);
|
||||
should.strictEqual(compareBuffer, true);
|
||||
cb();
|
||||
}
|
||||
);
|
||||
},
|
||||
function(cb) {
|
||||
executeSQL(proc_drop, cb);
|
||||
}
|
||||
], done);
|
||||
}); // 91.2.4
|
||||
|
||||
}); // 91.2
|
||||
|
||||
describe('91.3 PLSQL FUNCTION RETURN BLOB to RAW', function() {
|
||||
var proc = "CREATE OR REPLACE FUNCTION nodb_blobs_out_92 (ID_1 IN NUMBER, ID_2 IN NUMBER, C IN VARCHAR2) RETURN RAW \n" +
|
||||
"IS \n" +
|
||||
" tmpLOB2 BLOB; \n" +
|
||||
"BEGIN \n" +
|
||||
" select blob into tmpLOB2 from nodb_blob_1 where num_1 = ID_1;\n" +
|
||||
" RETURN tmpLOB2; \n" +
|
||||
"END;";
|
||||
var sqlRun = "begin :output := nodb_blobs_out_92 (:i1, :i2, :c); end;";
|
||||
var proc_drop = "DROP FUNCTION nodb_blobs_out_92";
|
||||
|
||||
before(function(done) {
|
||||
executeSQL(proc, done);
|
||||
}); // before
|
||||
|
||||
after(function(done) {
|
||||
executeSQL(proc_drop, done);
|
||||
}); // after
|
||||
|
||||
beforeEach('set oracledb.fetchAsBuffer', function(done) {
|
||||
oracledb.fetchAsBuffer = [ oracledb.BLOB ];
|
||||
done();
|
||||
}); // beforeEach
|
||||
|
||||
afterEach('clear the By type specification', function(done) {
|
||||
oracledb.fetchAsBuffer = [];
|
||||
done();
|
||||
}); // afterEach
|
||||
|
||||
it('91.3.1 bind by name - 1', function(done) {
|
||||
var len = 1000;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "91.3.1";
|
||||
var strBuf = random.getRandomString(len, specialStr);
|
||||
var content = node6plus ? Buffer.from(strBuf, "utf-8") : new Buffer(strBuf, "utf-8");
|
||||
|
||||
async.series([
|
||||
function(cb) {
|
||||
var sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)";
|
||||
var bindVar = {
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len },
|
||||
c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }
|
||||
};
|
||||
insertTable(sql, bindVar, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
{
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: null, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN },
|
||||
output: { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len }
|
||||
},
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds.output;
|
||||
var compareBuffer = assist.compare2Buffers(resultVal, content);
|
||||
should.strictEqual(compareBuffer, true);
|
||||
cb();
|
||||
}
|
||||
);
|
||||
}
|
||||
], done);
|
||||
}); // 91.3.1
|
||||
|
||||
it('91.3.2 bind by position - 1', function(done) {
|
||||
var len = 1000;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "91.3.2";
|
||||
var strBuf = random.getRandomString(len, specialStr);
|
||||
var content = node6plus ? Buffer.from(strBuf, "utf-8") : new Buffer(strBuf, "utf-8");
|
||||
|
||||
async.series([
|
||||
function(cb) {
|
||||
var sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)";
|
||||
var bindVar = {
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len },
|
||||
c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }
|
||||
};
|
||||
insertTable(sql, bindVar, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
[
|
||||
{ type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len }, sequence, null, content
|
||||
],
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds[0];
|
||||
var compareBuffer = assist.compare2Buffers(resultVal, content);
|
||||
should.strictEqual(compareBuffer, true);
|
||||
cb();
|
||||
}
|
||||
);
|
||||
}
|
||||
], done);
|
||||
}); // 91.3.2
|
||||
|
||||
it('91.3.3 bind by name - 2', function(done) {
|
||||
var len = 1000;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "91.3.3";
|
||||
var strBuf = random.getRandomString(len, specialStr);
|
||||
var content = node6plus ? Buffer.from(strBuf, "utf-8") : new Buffer(strBuf, "utf-8");
|
||||
|
||||
async.series([
|
||||
function(cb) {
|
||||
var sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)";
|
||||
var bindVar = {
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len },
|
||||
c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }
|
||||
};
|
||||
insertTable(sql, bindVar, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
{
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c: { val: null, type: oracledb.BUFFER, dir: oracledb.BIND_IN },
|
||||
output: { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len }
|
||||
},
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds.output;
|
||||
var compareBuffer = assist.compare2Buffers(resultVal, content);
|
||||
should.strictEqual(compareBuffer, true);
|
||||
cb();
|
||||
}
|
||||
);
|
||||
}
|
||||
], done);
|
||||
}); // 91.3.3
|
||||
|
||||
it('91.3.4 bind by position - 2', function(done) {
|
||||
var len = 1000;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "91.3.4";
|
||||
var strBuf = random.getRandomString(len, specialStr);
|
||||
var content = node6plus ? Buffer.from(strBuf, "utf-8") : new Buffer(strBuf, "utf-8");
|
||||
|
||||
async.series([
|
||||
function(cb) {
|
||||
var sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)";
|
||||
var bindVar = {
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len },
|
||||
c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }
|
||||
};
|
||||
insertTable(sql, bindVar, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
[
|
||||
{ type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len }, sequence, sequence, null
|
||||
],
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds[0];
|
||||
var compareBuffer = assist.compare2Buffers(resultVal, content);
|
||||
should.strictEqual(compareBuffer, true);
|
||||
cb();
|
||||
}
|
||||
);
|
||||
}
|
||||
], done);
|
||||
}); // 91.3.4
|
||||
|
||||
}); // 91.3
|
||||
|
||||
});
|
|
@ -0,0 +1,644 @@
|
|||
/* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. */
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* You may not use the identified files except in compliance with the Apache
|
||||
* License, Version 2.0 (the "License.")
|
||||
*
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* The node-oracledb test suite uses 'mocha', 'should' and 'async'.
|
||||
* See LICENSE.md for relevant licenses.
|
||||
*
|
||||
* NAME
|
||||
* 90. fetchClobAsString4.js
|
||||
*
|
||||
* DESCRIPTION
|
||||
* Testing CLOB binding out as String.
|
||||
*
|
||||
* NUMBERING RULElist
|
||||
* Test numbers follow this numbering rule:
|
||||
* 1 - 20 are reserved for basic functional tests
|
||||
* 21 - 50 are reserved for data type supporting tests
|
||||
* 51 onwards are for other tests
|
||||
*
|
||||
*****************************************************************************/
|
||||
'use strict';
|
||||
|
||||
var oracledb = require('oracledb');
|
||||
var should = require('should');
|
||||
var async = require('async');
|
||||
var dbConfig = require('./dbconfig.js');
|
||||
var random = require('./random.js');
|
||||
|
||||
describe('90. fetchClobAsString4.js', function() {
|
||||
this.timeout(100000);
|
||||
|
||||
var connection = null;
|
||||
var insertID = 1; // assume id for insert into db starts from 1
|
||||
var proc_clob_in_tab = "BEGIN \n" +
|
||||
" DECLARE \n" +
|
||||
" e_table_missing EXCEPTION; \n" +
|
||||
" PRAGMA EXCEPTION_INIT(e_table_missing, -00942); \n" +
|
||||
" BEGIN \n" +
|
||||
" EXECUTE IMMEDIATE('DROP TABLE nodb_clob_1 PURGE'); \n" +
|
||||
" EXCEPTION \n" +
|
||||
" WHEN e_table_missing \n" +
|
||||
" THEN NULL; \n" +
|
||||
" END; \n" +
|
||||
" EXECUTE IMMEDIATE (' \n" +
|
||||
" CREATE TABLE nodb_clob_1 ( \n" +
|
||||
" num_1 NUMBER, \n" +
|
||||
" num_2 NUMBER, \n" +
|
||||
" content VARCHAR(2000), \n" +
|
||||
" clob CLOB \n" +
|
||||
" ) \n" +
|
||||
" '); \n" +
|
||||
"END; ";
|
||||
|
||||
before(function(done) {
|
||||
async.series([
|
||||
function(cb) {
|
||||
oracledb.getConnection(dbConfig, function(err, conn) {
|
||||
should.not.exist(err);
|
||||
connection = conn;
|
||||
cb();
|
||||
});
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
proc_clob_in_tab,
|
||||
function(err) {
|
||||
should.not.exist(err);
|
||||
cb();
|
||||
});
|
||||
}
|
||||
], done);
|
||||
|
||||
}); // before
|
||||
|
||||
after(function(done) {
|
||||
async.series([
|
||||
function(cb) {
|
||||
oracledb.fetchAsString = [];
|
||||
connection.execute(
|
||||
"DROP TABLE nodb_clob_1 PURGE",
|
||||
function(err) {
|
||||
should.not.exist(err);
|
||||
cb();
|
||||
});
|
||||
},
|
||||
function(cb) {
|
||||
connection.release(function(err) {
|
||||
should.not.exist(err);
|
||||
cb();
|
||||
});
|
||||
}
|
||||
], done);
|
||||
|
||||
}); // after
|
||||
|
||||
var executeSQL = function(sql, callback) {
|
||||
connection.execute(
|
||||
sql,
|
||||
function(err) {
|
||||
should.not.exist(err);
|
||||
return callback();
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
var insertTable = function(insertSql, bindVar, callback) {
|
||||
connection.execute(
|
||||
insertSql,
|
||||
bindVar,
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
should.strictEqual(result.rowsAffected, 1);
|
||||
callback();
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
var verifyResult = function(resultVal, specialStr, originalStr) {
|
||||
var resultLength = resultVal.length;
|
||||
var specStrLength = specialStr.length;
|
||||
should.strictEqual(resultLength, originalStr.length);
|
||||
should.strictEqual(resultVal.substring(0, specStrLength), specialStr);
|
||||
should.strictEqual(resultVal.substring(resultLength - specStrLength, resultLength), specialStr);
|
||||
};
|
||||
|
||||
describe('90.1 PLSQL FUNCTION RETURN CLOB to STRING', function() {
|
||||
var proc = "CREATE OR REPLACE FUNCTION nodb_clobs_out_94 (ID_1 IN NUMBER, ID_2 IN NUMBER, C IN VARCHAR2) RETURN CLOB \n" +
|
||||
"IS \n" +
|
||||
" tmpLOB4 CLOB; \n" +
|
||||
"BEGIN \n" +
|
||||
" select clob into tmpLOB4 from nodb_clob_1 where num_1 = ID_1;\n" +
|
||||
" RETURN tmpLOB4; \n" +
|
||||
"END;";
|
||||
var sqlRun = "begin :output := nodb_clobs_out_94 (:i1, :i2, :c); end;";
|
||||
var proc_drop = "DROP FUNCTION nodb_clobs_out_94";
|
||||
|
||||
before(function(done) {
|
||||
executeSQL(proc, done);
|
||||
});
|
||||
|
||||
after(function(done) {
|
||||
executeSQL(proc_drop, done);
|
||||
});
|
||||
|
||||
beforeEach('set oracledb.fetchAsString', function(done) {
|
||||
oracledb.fetchAsString = [ oracledb.CLOB ];
|
||||
done();
|
||||
}); // beforeEach
|
||||
|
||||
afterEach('clear the By type specification', function(done) {
|
||||
oracledb.fetchAsString = [];
|
||||
done();
|
||||
}); // afterEach
|
||||
|
||||
it('90.1.1 bind by position - 1', function(done) {
|
||||
var len = 400;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "90.1.1";
|
||||
var clobStr = random.getRandomString(len, specialStr);
|
||||
|
||||
async.series([
|
||||
function(cb) {
|
||||
var sql ="INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)";
|
||||
var bindVar = {
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len },
|
||||
c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }
|
||||
};
|
||||
insertTable(sql, bindVar, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
[ { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len }, sequence, null, clobStr],
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds[0];
|
||||
verifyResult(resultVal, specialStr, clobStr);
|
||||
cb();
|
||||
}
|
||||
);
|
||||
}
|
||||
], done);
|
||||
}); // 90.1.1
|
||||
|
||||
it('90.1.2 bind by name - 1', function(done) {
|
||||
var len = 400;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "90.1.2";
|
||||
var clobStr = random.getRandomString(len, specialStr);
|
||||
|
||||
async.series([
|
||||
function(cb) {
|
||||
var sql ="INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)";
|
||||
var bindVar = {
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len },
|
||||
c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }
|
||||
};
|
||||
insertTable(sql, bindVar, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
{
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: null, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN },
|
||||
output: { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len }
|
||||
},
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds.output;
|
||||
verifyResult(resultVal, specialStr, clobStr);
|
||||
cb();
|
||||
}
|
||||
);
|
||||
}
|
||||
], done);
|
||||
}); // 90.1.2
|
||||
|
||||
it('90.1.3 bind by position - 2', function(done) {
|
||||
var len = 400;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "90.1.2";
|
||||
var clobStr = random.getRandomString(len, specialStr);
|
||||
|
||||
async.series([
|
||||
function(cb) {
|
||||
var sql ="INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)";
|
||||
var bindVar = {
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len },
|
||||
c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }
|
||||
};
|
||||
insertTable(sql, bindVar, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
[ { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len }, sequence, sequence, null ],
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds[0];
|
||||
verifyResult(resultVal, specialStr, clobStr);
|
||||
cb();
|
||||
}
|
||||
);
|
||||
}
|
||||
], done);
|
||||
}); // 90.1.3
|
||||
|
||||
it('90.1.4 bind by name - 2', function(done) {
|
||||
var len = 400;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "90.1.4";
|
||||
var clobStr = random.getRandomString(len, specialStr);
|
||||
|
||||
async.series([
|
||||
function(cb) {
|
||||
var sql ="INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)";
|
||||
var bindVar = {
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len },
|
||||
c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }
|
||||
};
|
||||
insertTable(sql, bindVar, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
{
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c: { val: null, type: oracledb.STRING, dir: oracledb.BIND_IN },
|
||||
output: { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len }
|
||||
},
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds.output;
|
||||
verifyResult(resultVal, specialStr, clobStr);
|
||||
cb();
|
||||
}
|
||||
);
|
||||
}
|
||||
], done);
|
||||
}); // 90.1.4
|
||||
|
||||
}); // 90.1
|
||||
|
||||
describe('90.2 PLSQL PROCEDURE BIND OUT CLOB to STRING', function() {
|
||||
var proc = "CREATE OR REPLACE PROCEDURE nodb_clobs_out_92 (ID_1 IN NUMBER, ID_2 IN NUMBER, C1 IN VARCHAR2, C2 OUT CLOB) \n" +
|
||||
"AS \n" +
|
||||
"BEGIN \n" +
|
||||
" select clob into C2 from nodb_clob_1 where num_1 = ID_1;\n" +
|
||||
"END;";
|
||||
var sqlRun = "begin nodb_clobs_out_92 (:i1, :i2, :c1, :c2); end;";
|
||||
var proc_drop = "DROP PROCEDURE nodb_clobs_out_92";
|
||||
|
||||
before(function(done) {
|
||||
executeSQL(proc, done);
|
||||
});
|
||||
|
||||
after(function(done) {
|
||||
executeSQL(proc_drop, done);
|
||||
});
|
||||
|
||||
beforeEach('set oracledb.fetchAsString', function(done) {
|
||||
oracledb.fetchAsString = [ oracledb.CLOB ];
|
||||
done();
|
||||
}); // beforeEach
|
||||
|
||||
afterEach('clear the By type specification', function(done) {
|
||||
oracledb.fetchAsString = [];
|
||||
done();
|
||||
}); // afterEach
|
||||
|
||||
it('90.2.1 bind by position - 1', function(done) {
|
||||
var len = 500;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "90.2.1";
|
||||
var clobStr = random.getRandomString(len, specialStr);
|
||||
|
||||
async.series([
|
||||
function(cb) {
|
||||
var sql ="INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)";
|
||||
var bindVar = {
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len },
|
||||
c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }
|
||||
};
|
||||
insertTable(sql, bindVar, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
[ sequence, null, { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN }, { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len } ],
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds[0];
|
||||
verifyResult(resultVal, specialStr, clobStr);
|
||||
cb();
|
||||
}
|
||||
);
|
||||
}
|
||||
], done);
|
||||
}); // 90.2.1
|
||||
|
||||
it('90.2.2 bind by name - 1', function(done) {
|
||||
var len = 400;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "90.2.2";
|
||||
var clobStr = random.getRandomString(len, specialStr);
|
||||
|
||||
async.series([
|
||||
function(cb) {
|
||||
var sql ="INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)";
|
||||
var bindVar = {
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len },
|
||||
c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }
|
||||
};
|
||||
insertTable(sql, bindVar, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
{
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: null, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN },
|
||||
c2: { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len }
|
||||
},
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds.c2;
|
||||
verifyResult(resultVal, specialStr, clobStr);
|
||||
cb();
|
||||
}
|
||||
);
|
||||
}
|
||||
], done);
|
||||
}); // 90.2.2
|
||||
|
||||
it('90.2.3 bind by position - 2', function(done) {
|
||||
var len = 500;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "90.2.3";
|
||||
var clobStr = random.getRandomString(len, specialStr);
|
||||
|
||||
async.series([
|
||||
function(cb) {
|
||||
var sql ="INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)";
|
||||
var bindVar = {
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len },
|
||||
c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }
|
||||
};
|
||||
insertTable(sql, bindVar, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
[ sequence, sequence, null, { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len } ],
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds[0];
|
||||
verifyResult(resultVal, specialStr, clobStr);
|
||||
cb();
|
||||
}
|
||||
);
|
||||
}
|
||||
], done);
|
||||
}); // 90.2.3
|
||||
|
||||
it('90.2.4 bind by name - 2', function(done) {
|
||||
var len = 400;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "90.2.4";
|
||||
var clobStr = random.getRandomString(len, specialStr);
|
||||
|
||||
async.series([
|
||||
function(cb) {
|
||||
var sql ="INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)";
|
||||
var bindVar = {
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len },
|
||||
c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }
|
||||
};
|
||||
insertTable(sql, bindVar, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
{
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c1: { val: null, type: oracledb.STRING, dir: oracledb.BIND_IN },
|
||||
c2: { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len }
|
||||
},
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds.c2;
|
||||
verifyResult(resultVal, specialStr, clobStr);
|
||||
cb();
|
||||
}
|
||||
);
|
||||
}
|
||||
], done);
|
||||
}); // 90.2.4
|
||||
|
||||
}); // 90.2
|
||||
|
||||
describe('90.3 PLSQL FUNCTION RETURN CLOB to VARCHAR2', function() {
|
||||
var proc = "CREATE OR REPLACE FUNCTION nodb_clobs_out_92 (ID_1 IN NUMBER, ID_2 IN NUMBER, C IN VARCHAR2) RETURN VARCHAR2 \n" +
|
||||
"IS \n" +
|
||||
" tmpLOB2 CLOB; \n" +
|
||||
"BEGIN \n" +
|
||||
" select clob into tmpLOB2 from nodb_clob_1 where num_1 = ID_1;\n" +
|
||||
" RETURN tmpLOB2; \n" +
|
||||
"END;";
|
||||
var sqlRun = "begin :output := nodb_clobs_out_92 (:i1, :i2, :c); end;";
|
||||
var proc_drop = "DROP FUNCTION nodb_clobs_out_92";
|
||||
|
||||
before(function(done) {
|
||||
executeSQL(proc, done);
|
||||
}); // before
|
||||
|
||||
after(function(done) {
|
||||
executeSQL(proc_drop, done);
|
||||
}); // after
|
||||
|
||||
beforeEach('set oracledb.fetchAsString', function(done) {
|
||||
oracledb.fetchAsString = [ oracledb.CLOB ];
|
||||
done();
|
||||
}); // beforeEach
|
||||
|
||||
afterEach('clear the By type specification', function(done) {
|
||||
oracledb.fetchAsString = [];
|
||||
done();
|
||||
}); // afterEach
|
||||
|
||||
it('90.3.1 bind by name - 1', function(done) {
|
||||
var len = 1000;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "90.3.1";
|
||||
var clobStr = random.getRandomString(len, specialStr);
|
||||
|
||||
async.series([
|
||||
function(cb) {
|
||||
var sql ="INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)";
|
||||
var bindVar = {
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len },
|
||||
c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }
|
||||
};
|
||||
insertTable(sql, bindVar, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
{
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: null, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN },
|
||||
output: { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len }
|
||||
},
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds.output;
|
||||
verifyResult(resultVal, specialStr, clobStr);
|
||||
cb();
|
||||
}
|
||||
);
|
||||
}
|
||||
], done);
|
||||
}); // 90.3.1
|
||||
|
||||
it('90.3.2 bind by position - 1', function(done) {
|
||||
var len = 1000;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "90.3.1";
|
||||
var clobStr = random.getRandomString(len, specialStr);
|
||||
|
||||
async.series([
|
||||
function(cb) {
|
||||
var sql ="INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)";
|
||||
var bindVar = {
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len },
|
||||
c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }
|
||||
};
|
||||
insertTable(sql, bindVar, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
[ { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len }, sequence, null, clobStr ],
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds[0];
|
||||
verifyResult(resultVal, specialStr, clobStr);
|
||||
cb();
|
||||
}
|
||||
);
|
||||
}
|
||||
], done);
|
||||
}); // 90.3.2
|
||||
|
||||
it('90.3.3 bind by name - 2', function(done) {
|
||||
var len = 1000;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "90.3.3";
|
||||
var clobStr = random.getRandomString(len, specialStr);
|
||||
|
||||
async.series([
|
||||
function(cb) {
|
||||
var sql ="INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)";
|
||||
var bindVar = {
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len },
|
||||
c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }
|
||||
};
|
||||
insertTable(sql, bindVar, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
{
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c: { val: null, type: oracledb.STRING, dir: oracledb.BIND_IN },
|
||||
output: { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len }
|
||||
},
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds.output;
|
||||
verifyResult(resultVal, specialStr, clobStr);
|
||||
cb();
|
||||
}
|
||||
);
|
||||
}
|
||||
], done);
|
||||
}); // 90.3.3
|
||||
|
||||
it('90.3.4 bind by position - 2', function(done) {
|
||||
var len = 1000;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "90.3.4";
|
||||
var clobStr = random.getRandomString(len, specialStr);
|
||||
|
||||
async.series([
|
||||
function(cb) {
|
||||
var sql ="INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)";
|
||||
var bindVar = {
|
||||
i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
|
||||
c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len },
|
||||
c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }
|
||||
};
|
||||
insertTable(sql, bindVar, cb);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
[ { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len }, sequence, sequence, null ],
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds[0];
|
||||
verifyResult(resultVal, specialStr, clobStr);
|
||||
cb();
|
||||
}
|
||||
);
|
||||
}
|
||||
], done);
|
||||
}); // 90.3.4
|
||||
|
||||
}); // 90.3
|
||||
|
||||
});
|
|
@ -1,4 +1,4 @@
|
|||
Overview of node-oracledb functional tests
|
||||
>Overview of node-oracledb functional tests
|
||||
|
||||
1. connection.js
|
||||
1.1 can run SQL query with different output formats
|
||||
|
@ -241,6 +241,11 @@ Overview of node-oracledb functional tests
|
|||
12.7 Testing maxRows
|
||||
12.7.1 maxRows option is ignored when resultSet option is true
|
||||
12.7.2 maxRows option is ignored with REF Cursor
|
||||
12.8 Testing errInvalidResultSet
|
||||
- 12.8.1 Negative: UPDATE BIND out with oracledb.CURSOR - bind by name
|
||||
- 12.8.2 Negative: UPDATE BIND out with oracledb.CURSOR - bind by position
|
||||
- 12.8.3 Negative: INSERT BIND out with oracledb.CURSOR - bind by name
|
||||
- 12.8.4 Negative: INSERT BIND out with oracledb.CURSOR - bind by position
|
||||
|
||||
13. stream1.js
|
||||
13.1 Testing QueryStream
|
||||
|
@ -649,12 +654,12 @@ Overview of node-oracledb functional tests
|
|||
45.5 instanceof works for lob instances
|
||||
|
||||
51. poolTerminate.js
|
||||
51.1 can not get/set the attributes of terminated pool
|
||||
- 51.1 can not get/set the attributes of terminated pool
|
||||
51.2 can not get connections from the terminated pool
|
||||
51.3 can not terminate the same pool multiple times
|
||||
51.4 can not close the same pool multiple times
|
||||
- 51.3 can not terminate the same pool multiple times
|
||||
- 51.4 can not close the same pool multiple times
|
||||
51.5 pool is still available after the failing close
|
||||
51.6 can not close the same connection multiple times
|
||||
- 51.6 can not close the same connection multiple times
|
||||
|
||||
55. resultSet2.js
|
||||
55.1 query a RDBMS function
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved. */
|
||||
/* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved. */
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
|
|
|
@ -78,7 +78,7 @@ describe('107. rowidDMLBindAsString.js', function() {
|
|||
should.not.exist(err);
|
||||
cb();
|
||||
}
|
||||
)
|
||||
);
|
||||
}
|
||||
], done);
|
||||
});
|
||||
|
@ -92,7 +92,7 @@ describe('107. rowidDMLBindAsString.js', function() {
|
|||
should.not.exist(err);
|
||||
cb();
|
||||
}
|
||||
)
|
||||
);
|
||||
},
|
||||
function(cb) {
|
||||
connection.release( function(err) {
|
||||
|
@ -165,7 +165,7 @@ describe('107. rowidDMLBindAsString.js', function() {
|
|||
(err.message).should.equal("NJS-011: encountered bind value and type mismatch");
|
||||
done();
|
||||
}
|
||||
)
|
||||
);
|
||||
});
|
||||
|
||||
it('107.1.6 works with string 0', function(done) {
|
||||
|
@ -359,7 +359,7 @@ describe('107. rowidDMLBindAsString.js', function() {
|
|||
(result.rowsAffected).should.be.exactly(1);
|
||||
cb();
|
||||
}
|
||||
)
|
||||
);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
|
@ -372,7 +372,7 @@ describe('107. rowidDMLBindAsString.js', function() {
|
|||
should.strictEqual(typeof resultVal, "string");
|
||||
cb();
|
||||
}
|
||||
)
|
||||
);
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
@ -392,7 +392,7 @@ describe('107. rowidDMLBindAsString.js', function() {
|
|||
(result.rowsAffected).should.be.exactly(1);
|
||||
cb();
|
||||
}
|
||||
)
|
||||
);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
|
@ -416,7 +416,7 @@ describe('107. rowidDMLBindAsString.js', function() {
|
|||
should.strictEqual(resultVal_row, content.substring(15, 18));
|
||||
cb();
|
||||
}
|
||||
)
|
||||
);
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
@ -443,7 +443,7 @@ describe('107. rowidDMLBindAsString.js', function() {
|
|||
(result.rowsAffected).should.be.exactly(1);
|
||||
cb();
|
||||
}
|
||||
)
|
||||
);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
|
@ -454,7 +454,7 @@ describe('107. rowidDMLBindAsString.js', function() {
|
|||
(result.rowsAffected).should.be.exactly(1);
|
||||
cb();
|
||||
}
|
||||
)
|
||||
);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
|
@ -467,7 +467,7 @@ describe('107. rowidDMLBindAsString.js', function() {
|
|||
should.strictEqual(typeof resultVal, "string");
|
||||
cb();
|
||||
}
|
||||
)
|
||||
);
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
@ -486,7 +486,7 @@ describe('107. rowidDMLBindAsString.js', function() {
|
|||
should.strictEqual(typeof resultVal, "string");
|
||||
callback();
|
||||
}
|
||||
)
|
||||
);
|
||||
};
|
||||
|
||||
var update_returning = function(content_insert, bindVar_update, expected, callback) {
|
||||
|
@ -506,7 +506,7 @@ describe('107. rowidDMLBindAsString.js', function() {
|
|||
(result.rowsAffected).should.be.exactly(1);
|
||||
cb();
|
||||
}
|
||||
)
|
||||
);
|
||||
},
|
||||
function(cb) {
|
||||
connection.execute(
|
||||
|
@ -521,7 +521,7 @@ describe('107. rowidDMLBindAsString.js', function() {
|
|||
should.strictEqual(typeof resultVal, "string");
|
||||
cb();
|
||||
}
|
||||
)
|
||||
);
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
|
|
@ -0,0 +1,131 @@
|
|||
/* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. */
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* You may not use the identified files except in compliance with the Apache
|
||||
* License, Version 2.0 (the "License.")
|
||||
*
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* The node-oracledb test suite uses 'mocha', 'should' and 'async'.
|
||||
* See LICENSE.md for relevant licenses.
|
||||
*
|
||||
* NAME
|
||||
* sql.js
|
||||
*
|
||||
* DESCRIPTION
|
||||
* generate sql
|
||||
*****************************************************************************/
|
||||
'use strict';
|
||||
var should = require('should');
|
||||
var async = require('async');
|
||||
|
||||
var sql = exports;
|
||||
module.exports = sql;
|
||||
|
||||
sql.createTable = function(tableName, dataType) {
|
||||
var element = dataType;
|
||||
if(dataType === "CHAR") {
|
||||
element = element + "(1000)";
|
||||
}
|
||||
if(dataType === "NCHAR") {
|
||||
element = element + "(1000)";
|
||||
}
|
||||
if(dataType === "VARCHAR2") {
|
||||
element = element + "(1000)";
|
||||
}
|
||||
if(dataType === "RAW") {
|
||||
element = element + "(1000)";
|
||||
}
|
||||
|
||||
var sql = "BEGIN \n" +
|
||||
" DECLARE \n" +
|
||||
" e_table_missing EXCEPTION; \n" +
|
||||
" PRAGMA EXCEPTION_INIT(e_table_missing, -00942);\n" +
|
||||
" BEGIN \n" +
|
||||
" EXECUTE IMMEDIATE ('DROP TABLE " + tableName + " PURGE' ); \n" +
|
||||
" EXCEPTION \n" +
|
||||
" WHEN e_table_missing \n" +
|
||||
" THEN NULL; \n" +
|
||||
" END; \n" +
|
||||
" EXECUTE IMMEDIATE ( ' \n" +
|
||||
" CREATE TABLE " + tableName + " ( \n" +
|
||||
" id NUMBER, \n" +
|
||||
" content " + element + " \n" +
|
||||
" ) \n" +
|
||||
" '); \n" +
|
||||
"END; ";
|
||||
return sql;
|
||||
};
|
||||
|
||||
sql.createAllTable = function(tableName, dataTypeArray) {
|
||||
var sql = "BEGIN \n" +
|
||||
" DECLARE \n" +
|
||||
" e_table_missing EXCEPTION; \n" +
|
||||
" PRAGMA EXCEPTION_INIT(e_table_missing, -00942);\n" +
|
||||
" BEGIN \n" +
|
||||
" EXECUTE IMMEDIATE ('DROP TABLE " + tableName + " PURGE' ); \n" +
|
||||
" EXCEPTION \n" +
|
||||
" WHEN e_table_missing \n" +
|
||||
" THEN NULL; \n" +
|
||||
" END; \n" +
|
||||
" EXECUTE IMMEDIATE ( ' \n" +
|
||||
" CREATE TABLE " + tableName + " ( \n" +
|
||||
" id NUMBER, \n" ;
|
||||
|
||||
async.forEach(dataTypeArray, function(element, cb) {
|
||||
var index = dataTypeArray.indexOf(element);
|
||||
var length = dataTypeArray.length;
|
||||
var col_name = "col_" + ( index + 1 );
|
||||
var col_type = element;
|
||||
var isLast;
|
||||
|
||||
if(col_type === "CHAR") {
|
||||
element = element + "(2000)";
|
||||
}
|
||||
if(col_type === "NCHAR") {
|
||||
element = element + "(1000)";
|
||||
}
|
||||
if(col_type === "VARCHAR2") {
|
||||
element = element + "(4000)";
|
||||
}
|
||||
if(col_type === "RAW") {
|
||||
element = element + "(2000)";
|
||||
}
|
||||
isLast = (index == (length - 1)) ? true : false;
|
||||
sql = appendSql(sql, col_name, element, isLast);
|
||||
cb();
|
||||
}, function(err) {
|
||||
should.not.exist(err);
|
||||
});
|
||||
sql = sql +
|
||||
" ) \n" +
|
||||
" '); \n" +
|
||||
"END; ";
|
||||
return sql;
|
||||
};
|
||||
|
||||
sql.executeSql = function(connection, sql) {
|
||||
connection.execute(
|
||||
sql,
|
||||
function(err) {
|
||||
should.not.exist(err);
|
||||
}
|
||||
);
|
||||
};
|
||||
var appendSql = function(sql, col_name, col_type, isLast) {
|
||||
if(isLast === true) {
|
||||
sql = sql + " " + col_name + " " + col_type + " \n";
|
||||
} else {
|
||||
sql = sql + " " +col_name + " " + col_type + ", \n";
|
||||
}
|
||||
return sql;
|
||||
};
|
Loading…
Reference in New Issue