Fix binding NULL to PL/SQL parameters
This commit is contained in:
parent
7c1a54e535
commit
053f88c5c9
|
@ -75,9 +75,6 @@ Nan::Persistent<FunctionTemplate> Connection::connectionTemplate_s;
|
|||
#define NJS_ITER_SIZE 65535 /* Use (64KB - 1) with 11g Clients */
|
||||
#endif
|
||||
|
||||
// Max number of bytes allowed for PLSQL STRING/BUFFER arguments
|
||||
#define NJS_THRESHOLD_SIZE_PLSQL_STRING_ARG 32767
|
||||
|
||||
// number of rows prefetched by non-ResultSet queries
|
||||
#define NJS_PREFETCH_NON_RESULTSET 2
|
||||
|
||||
|
@ -1088,6 +1085,7 @@ void Connection::GetInBindParamsScalar(Local<Value> v8val, Bind* bind,
|
|||
{
|
||||
case NJS_VALUETYPE_NULL:
|
||||
bind->value = NULL;
|
||||
*(bind->len) = 0; /* NULL value provided, no buffer used */
|
||||
bind->type = dpi::DpiVarChar;
|
||||
break;
|
||||
|
||||
|
@ -2403,41 +2401,17 @@ void Connection::Descr2StringOrBuffer ( eBaton* executeBaton )
|
|||
* index - Index of the Bind vector
|
||||
*
|
||||
* NOTE:
|
||||
* Bind enhancements for CLOB/BLOB As String/Buffer not supported for INOUT
|
||||
* arguments
|
||||
* Bind type is expected only STRING and RAW
|
||||
*
|
||||
*/
|
||||
void Connection::ConvertStringOrBuffer2LOB ( eBaton* executeBaton,
|
||||
unsigned int index )
|
||||
{
|
||||
Bind *bind = executeBaton->binds[index];
|
||||
DPI_SZ_TYPE size = 0;
|
||||
|
||||
if ( !bind->isOut && !bind->isInOut )
|
||||
ExtBind* extBind = new ExtBind ( NJS_EXTBIND_LOB );
|
||||
if ( extBind )
|
||||
{
|
||||
// Case for BIND_IN
|
||||
size = *bind->len;
|
||||
}
|
||||
else if ( bind->isInOut )
|
||||
{
|
||||
// Case for BIND_INOUT
|
||||
size = ( bind->maxSize >= *( bind->len ) ) ? bind->maxSize : *( bind->len );
|
||||
}
|
||||
else if ( bind->isOut && !bind->isInOut )
|
||||
{
|
||||
// Case for BIND_OUT
|
||||
size = bind->maxSize;
|
||||
}
|
||||
|
||||
if ( size > NJS_THRESHOLD_SIZE_PLSQL_STRING_ARG )
|
||||
{
|
||||
ExtBind* extBind = new ExtBind ( NJS_EXTBIND_LOB );
|
||||
if ( !extBind )
|
||||
{
|
||||
executeBaton->error = NJSMessages::getErrorMsg
|
||||
( errInsufficientMemory );
|
||||
goto exitConvertStringOrBuffer2LOB;
|
||||
}
|
||||
extBind->fields.extLob.maxSize = bind->maxSize;
|
||||
|
||||
// Convert the input data into Temp LOB for IN and INOUT binds
|
||||
|
@ -2462,9 +2436,13 @@ void Connection::ConvertStringOrBuffer2LOB ( eBaton* executeBaton,
|
|||
|
||||
// Change the bind->type to LOB to handle more than 32k data
|
||||
bind->type = ( bind->type == DpiVarChar ) ? DpiClob : DpiBlob;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
executeBaton->error = NJSMessages::getErrorMsg
|
||||
( errInsufficientMemory );
|
||||
}
|
||||
exitConvertStringOrBuffer2LOB:
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
|
@ -2517,98 +2495,104 @@ void Connection::PrepareLOBsForBind ( eBaton* executeBaton, unsigned int index )
|
|||
*/
|
||||
void Connection::PrepareAndBind (eBaton* executeBaton)
|
||||
{
|
||||
executeBaton->dpistmt = executeBaton->dpiconn->getStmt(executeBaton->sql);
|
||||
executeBaton->st = executeBaton->dpistmt->stmtType ();
|
||||
executeBaton->dpistmt = executeBaton->dpiconn->
|
||||
getStmt(executeBaton->sql);
|
||||
executeBaton->st = executeBaton->dpistmt->stmtType ();
|
||||
executeBaton->stmtIsReturning = executeBaton->dpistmt->isReturning ();
|
||||
ExtBind *extBind = NULL ;
|
||||
ExtBind *extBind = NULL ;
|
||||
|
||||
if(!executeBaton->binds.empty())
|
||||
{
|
||||
if(!executeBaton->binds[0]->key.empty())
|
||||
for(unsigned int index = 0 ;index < executeBaton->binds.size();
|
||||
index++)
|
||||
{
|
||||
for(unsigned int index = 0 ;index < executeBaton->binds.size();
|
||||
index++)
|
||||
if ( executeBaton->binds[index]->isOut &&
|
||||
executeBaton->stmtIsReturning &&
|
||||
executeBaton->binds[index]->type == dpi::DpiRSet )
|
||||
{
|
||||
if ( executeBaton->binds[index]->isOut &&
|
||||
executeBaton->stmtIsReturning &&
|
||||
executeBaton->binds[index]->type == dpi::DpiRSet )
|
||||
{
|
||||
executeBaton->error = NJSMessages::getErrorMsg (
|
||||
errInvalidResultSet ) ;
|
||||
goto exitPrepareAndBind;
|
||||
}
|
||||
executeBaton->error = NJSMessages::getErrorMsg (
|
||||
errInvalidResultSet ) ;
|
||||
goto exitPrepareAndBind;
|
||||
}
|
||||
|
||||
// Process bind enhancements CLOB/BLOB As String/Buffer for PL/SQL
|
||||
if ( ( executeBaton->st == DpiStmtBegin ||
|
||||
executeBaton->st == DpiStmtDeclare ||
|
||||
executeBaton->st == DpiStmtCall ) &&
|
||||
( executeBaton->binds[index]->type == DpiVarChar ||
|
||||
executeBaton->binds[index]->type == DpiRaw ) )
|
||||
// Process bind enhancements CLOB/BLOB As String/Buffer for PL/SQL
|
||||
/* Interested only in PL/SQL procedure calls */
|
||||
if ( ( executeBaton->st == DpiStmtBegin ||
|
||||
executeBaton->st == DpiStmtDeclare ||
|
||||
executeBaton->st == DpiStmtCall ))
|
||||
{
|
||||
/* Interested only in STRING or RAW data type */
|
||||
if ( executeBaton->binds[index]->type == DpiVarChar ||
|
||||
executeBaton->binds[index]->type == DpiRaw )
|
||||
{
|
||||
ConvertStringOrBuffer2LOB ( executeBaton, index );
|
||||
if ( IsValue2TempLob ( executeBaton, index ) )
|
||||
{
|
||||
ConvertStringOrBuffer2LOB ( executeBaton, index ) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// process LOB object for IN and INOUT bind
|
||||
if ( ( executeBaton->binds[index]->isInOut ||
|
||||
!executeBaton->binds[index]->isOut ) &&
|
||||
( *(executeBaton->binds[index]->ind) != -1 ) &&
|
||||
( executeBaton->binds[index]->type == DpiClob ||
|
||||
executeBaton->binds[index]->type == DpiBlob ) )
|
||||
{
|
||||
PrepareLOBsForBind ( executeBaton, index );
|
||||
}
|
||||
|
||||
// Allocate for OUT Binds
|
||||
// For DML Returning, allocation happens through callback.
|
||||
// binds->value is a pointer to a pointer in case of LOBs
|
||||
if ( executeBaton->binds[index]->isOut &&
|
||||
!executeBaton->stmtIsReturning &&
|
||||
!executeBaton->binds[index]->value )
|
||||
{
|
||||
Connection::cbDynBufferAllocate ( executeBaton, false, 1, index );
|
||||
|
||||
if ( !executeBaton->error.empty() )
|
||||
{
|
||||
goto exitPrepareAndBind;
|
||||
}
|
||||
}
|
||||
|
||||
// process LOB object for IN and INOUT bind
|
||||
if ( ( executeBaton->binds[index]->isInOut ||
|
||||
!executeBaton->binds[index]->isOut ) &&
|
||||
( *(executeBaton->binds[index]->ind) != -1 ) &&
|
||||
( executeBaton->binds[index]->type == DpiClob ||
|
||||
executeBaton->binds[index]->type == DpiBlob ) )
|
||||
// Convert v8::Date to Oracle DB Type for IN and IN/OUT binds
|
||||
if ( executeBaton->binds[index]->type == DpiTimestampLTZ &&
|
||||
( executeBaton->binds[index]->isInOut || // INOUT binds
|
||||
!executeBaton->binds[index]->isOut ) ) // NOT OUT && NOT INOUT
|
||||
{
|
||||
Connection::UpdateDateValue ( executeBaton,
|
||||
executeBaton->binds[index], 1 ) ;
|
||||
}
|
||||
|
||||
if ( executeBaton->stmtIsReturning && executeBaton->binds[index]->isOut )
|
||||
{
|
||||
extBind = new ExtBind ( NJS_EXTBIND_DMLRETCB ) ;
|
||||
|
||||
DpiBindCallbackCtx *ctx = extBind->fields.extDMLReturnCbCtx.ctx =
|
||||
(DpiBindCallbackCtx *) malloc ( sizeof ( DpiBindCallbackCtx ) );
|
||||
if ( !ctx )
|
||||
{
|
||||
PrepareLOBsForBind ( executeBaton, index );
|
||||
}
|
||||
|
||||
// Allocate for OUT Binds
|
||||
// For DML Returning, allocation happens through callback.
|
||||
// binds->value is a pointer to a pointer in case of LOBs
|
||||
if ( executeBaton->binds[index]->isOut &&
|
||||
!executeBaton->stmtIsReturning &&
|
||||
!executeBaton->binds[index]->value )
|
||||
{
|
||||
Connection::cbDynBufferAllocate ( executeBaton,
|
||||
false, 1, index );
|
||||
}
|
||||
|
||||
// Convert v8::Date to Oracle DB Type for IN and IN/OUT binds
|
||||
if ( executeBaton->binds[index]->type == DpiTimestampLTZ &&
|
||||
( executeBaton->binds[index]->isInOut || // INOUT binds
|
||||
!executeBaton->binds[index]->isOut ) ) // NOT OUT && NOT INOUT
|
||||
{
|
||||
Connection::UpdateDateValue ( executeBaton,
|
||||
executeBaton->binds[index], 1 ) ;
|
||||
}
|
||||
|
||||
if ( executeBaton->stmtIsReturning &&
|
||||
executeBaton->binds[index]->isOut )
|
||||
{
|
||||
extBind = new ExtBind ( NJS_EXTBIND_DMLRETCB ) ;
|
||||
|
||||
DpiBindCallbackCtx *ctx = extBind->fields.extDMLReturnCbCtx.ctx =
|
||||
(DpiBindCallbackCtx *) malloc ( sizeof ( DpiBindCallbackCtx ) );
|
||||
if ( !ctx )
|
||||
{
|
||||
executeBaton->error = NJSMessages::getErrorMsg (
|
||||
executeBaton->error = NJSMessages::getErrorMsg (
|
||||
errInsufficientMemory );
|
||||
goto exitPrepareAndBind;
|
||||
}
|
||||
|
||||
ctx->callbackfn = Connection::cbDynBufferGet;
|
||||
/* App specific callback */
|
||||
ctx->data = (void *)executeBaton;
|
||||
/* Data for App specific callback */
|
||||
ctx->bndpos = index; /* for callback, bind position zero based */
|
||||
ctx->nrows = 0; /* # of rows - will be filled in later */
|
||||
ctx->iter = 0; /* # iteration - will be filled in later */
|
||||
ctx->dpistmt = executeBaton->dpistmt; /* DPI Statement object */
|
||||
|
||||
executeBaton->extBinds[index] = extBind;
|
||||
goto exitPrepareAndBind;
|
||||
}
|
||||
|
||||
ctx->callbackfn = Connection::cbDynBufferGet;
|
||||
/* App specific callback */
|
||||
ctx->data = (void *)executeBaton;
|
||||
/* Data for App specific callback */
|
||||
ctx->bndpos = index; /* for callback, bind position zero based */
|
||||
ctx->nrows = 0; /* # of rows - will be filled in later */
|
||||
ctx->iter = 0; /* # iteration - will be filled in later */
|
||||
ctx->dpistmt = executeBaton->dpistmt; /* DPI Statement object */
|
||||
|
||||
executeBaton->extBinds[index] = extBind;
|
||||
}
|
||||
|
||||
if ( !executeBaton->binds[index]->key.empty () )
|
||||
{
|
||||
// Bind by name
|
||||
executeBaton->dpistmt->bind(
|
||||
(const unsigned char*)executeBaton->binds[index]->key.c_str(),
|
||||
|
@ -2630,83 +2614,8 @@ void Connection::PrepareAndBind (eBaton* executeBaton)
|
|||
executeBaton->binds[index]->isOut) ?
|
||||
extBind->fields.extDMLReturnCbCtx.ctx : NULL);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for(unsigned int index = 0 ;index < executeBaton->binds.size();
|
||||
index++)
|
||||
else
|
||||
{
|
||||
// Process bind enhancements CLOB/BLOB As String/Buffer for PL/SQL
|
||||
if ( ( executeBaton->st == DpiStmtBegin ||
|
||||
executeBaton->st == DpiStmtDeclare ||
|
||||
executeBaton->st == DpiStmtCall ) &&
|
||||
( executeBaton->binds[index]->type == DpiVarChar ||
|
||||
executeBaton->binds[index]->type == DpiRaw ) )
|
||||
{
|
||||
ConvertStringOrBuffer2LOB ( executeBaton, index );
|
||||
}
|
||||
|
||||
if ( !executeBaton->error.empty() )
|
||||
{
|
||||
goto exitPrepareAndBind;
|
||||
}
|
||||
|
||||
// process LOB object for IN and INOUT bind
|
||||
if ( ( executeBaton->binds[index]->isInOut ||
|
||||
!executeBaton->binds[index]->isOut ) &&
|
||||
( *(executeBaton->binds[index]->ind) != -1 ) &&
|
||||
( executeBaton->binds[index]->type == DpiClob ||
|
||||
executeBaton->binds[index]->type == DpiBlob ) )
|
||||
{
|
||||
PrepareLOBsForBind ( executeBaton, index );
|
||||
}
|
||||
|
||||
// Allocate for OUT Binds
|
||||
// For DML Returning, allocation happens through callback
|
||||
if ( executeBaton->binds[index]->isOut &&
|
||||
!executeBaton->stmtIsReturning &&
|
||||
!executeBaton->binds[index]->value )
|
||||
{
|
||||
Connection::cbDynBufferAllocate ( executeBaton,
|
||||
false, 1, index );
|
||||
}
|
||||
|
||||
// Convert v8::Date to Oracle DB Type for IN and IN/OUT binds
|
||||
if ( executeBaton->binds[index]->type == DpiTimestampLTZ &&
|
||||
// InOut bind
|
||||
(executeBaton->binds[index]->isInOut ||
|
||||
// In bind
|
||||
(!executeBaton->binds[index]->isOut &&
|
||||
!executeBaton->binds[index]->isInOut)))
|
||||
{
|
||||
Connection::UpdateDateValue ( executeBaton,
|
||||
executeBaton->binds[index], 1 ) ;
|
||||
}
|
||||
|
||||
if ( executeBaton->stmtIsReturning &&
|
||||
executeBaton->binds[index]->isOut )
|
||||
{
|
||||
extBind = new ExtBind ( NJS_EXTBIND_DMLRETCB );
|
||||
DpiBindCallbackCtx *ctx = extBind->fields.extDMLReturnCbCtx.ctx =
|
||||
(DpiBindCallbackCtx *) malloc ( sizeof ( DpiBindCallbackCtx ) );
|
||||
|
||||
if ( !ctx )
|
||||
{
|
||||
executeBaton->error = NJSMessages::getErrorMsg (
|
||||
errInsufficientMemory );
|
||||
goto exitPrepareAndBind;
|
||||
}
|
||||
ctx->callbackfn = Connection::cbDynBufferGet;
|
||||
/* App specific callback */
|
||||
ctx->data = (void *)executeBaton;
|
||||
/* Data for App specific callback */
|
||||
ctx->bndpos = index; /* for callback, bind position zero based */
|
||||
ctx->nrows = 0; /* # of rows - will be filled in later */
|
||||
ctx->iter = 0; /* # iteration - will be filled in later */
|
||||
ctx->dpistmt = executeBaton->dpistmt; /* DPI Statement object */
|
||||
executeBaton->extBinds[index] = extBind;
|
||||
}
|
||||
|
||||
// Bind by position
|
||||
executeBaton->dpistmt->bind(
|
||||
index+1,executeBaton->binds[index]->type,
|
||||
|
|
|
@ -66,6 +66,9 @@ using namespace dpi;
|
|||
class Connection;
|
||||
class ProtoILob;
|
||||
|
||||
// Max number of bytes allowed for PLSQL STRING/BUFFER arguments
|
||||
#define NJS_THRESHOLD_SIZE_PLSQL_STRING_ARG 32767
|
||||
|
||||
// Extended bind type
|
||||
typedef enum
|
||||
{
|
||||
|
@ -760,6 +763,9 @@ private:
|
|||
ProtoILob *protoILob,
|
||||
bool isAutoCloseLob = true );
|
||||
|
||||
/*
|
||||
* Inline function to identify v8 type from given v8::value
|
||||
*/
|
||||
static inline ValueType GetValueType ( v8::Local<v8::Value> v )
|
||||
{
|
||||
ValueType type = NJS_VALUETYPE_INVALID;
|
||||
|
@ -796,6 +802,46 @@ private:
|
|||
return type;
|
||||
}
|
||||
|
||||
/*
|
||||
* large-value for PL/SQL procedure use tempLob if underling column type
|
||||
* is LOB, whether to use that feature for this bind or not
|
||||
*/
|
||||
static inline bool IsValue2TempLob ( eBaton *executeBaton,
|
||||
unsigned int index )
|
||||
{
|
||||
bool ret = false;
|
||||
|
||||
Bind *bind = executeBaton->binds[index];
|
||||
|
||||
if ( !bind->isOut && !bind->isInOut ) // IN Bind case
|
||||
{
|
||||
// for non-NULL values with provided value len > threshold
|
||||
if ( ( * ( bind-> ind ) != -1 ) &&
|
||||
( * ( bind-> len ) > NJS_THRESHOLD_SIZE_PLSQL_STRING_ARG ) )
|
||||
ret = true;
|
||||
}
|
||||
else if ( bind->isOut && !bind->isInOut ) // OUT Bind case
|
||||
{
|
||||
// Expected size is greater than threshold
|
||||
if ( bind -> maxSize > NJS_THRESHOLD_SIZE_PLSQL_STRING_ARG )
|
||||
{
|
||||
ret = true;
|
||||
}
|
||||
}
|
||||
else if ( bind->isInOut )
|
||||
{
|
||||
// For INOUT bind, either the given value len or expected size is
|
||||
// greater than threshold
|
||||
if ( max ( ( DPI_SZ_TYPE ) *( bind->len ), bind->maxSize ) >
|
||||
NJS_THRESHOLD_SIZE_PLSQL_STRING_ARG )
|
||||
{
|
||||
ret = true;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
dpi::Conn* dpiconn_;
|
||||
bool isValid_;
|
||||
|
|
|
@ -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.getRandomLenString(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.getRandomLenString(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.getRandomLenString(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.getRandomLenString(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.getRandomLenString(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.getRandomLenString(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.getRandomLenString(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.getRandomLenString(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.getRandomLenString(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.getRandomLenString(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.getRandomLenString(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.getRandomLenString(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);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
|
@ -144,7 +144,7 @@ describe('91. fetchBlobAsBuffer4.js', function() {
|
|||
done();
|
||||
}); // afterEach
|
||||
|
||||
it.skip('91.1.1 bind by position - 1', function(done) {
|
||||
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" +
|
||||
|
@ -152,7 +152,7 @@ describe('91. fetchBlobAsBuffer4.js', function() {
|
|||
" 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); 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;
|
||||
|
@ -178,11 +178,11 @@ describe('91. fetchBlobAsBuffer4.js', function() {
|
|||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
[ sequence, null, content, { type: oracledb.BLOB, dir: oracledb.BIND_OUT } ],
|
||||
[ { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len }, sequence, null, content ],
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds.output;
|
||||
var compareBuffer = assist.compare2Buffers(resultVal, content);
|
||||
var resultVal = result.outBinds[0];
|
||||
var compareBuffer = assist.compare2Buffers(content, resultVal);
|
||||
should.strictEqual(compareBuffer, true);
|
||||
cb();
|
||||
}
|
||||
|
@ -249,7 +249,7 @@ describe('91. fetchBlobAsBuffer4.js', function() {
|
|||
], done);
|
||||
}); // 91.1.2
|
||||
|
||||
it.skip('91.1.3 bind by position - 2', function(done) {
|
||||
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" +
|
||||
|
@ -257,7 +257,7 @@ describe('91. fetchBlobAsBuffer4.js', function() {
|
|||
" 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); 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;
|
||||
|
@ -283,10 +283,10 @@ describe('91. fetchBlobAsBuffer4.js', function() {
|
|||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
[ sequence, sequence, null, { type: oracledb.BLOB, dir: oracledb.BIND_OUT } ],
|
||||
[ { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len }, sequence, sequence, null ],
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds.output;
|
||||
var resultVal = result.outBinds[0];
|
||||
var compareBuffer = assist.compare2Buffers(resultVal, content);
|
||||
should.strictEqual(compareBuffer, true);
|
||||
cb();
|
||||
|
@ -375,7 +375,7 @@ describe('91. fetchBlobAsBuffer4.js', function() {
|
|||
done();
|
||||
}); // afterEach
|
||||
|
||||
it.skip('91.2.1 bind by position - 1', function(done) {
|
||||
it('91.2.1 bind by position - 1', function(done) {
|
||||
var len = 500;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "91.2.1";
|
||||
|
@ -399,10 +399,10 @@ describe('91. fetchBlobAsBuffer4.js', function() {
|
|||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
[ sequence, null, content, { type: oracledb.BLOB, dir: oracledb.BIND_OUT } ],
|
||||
[ sequence, null, content, { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len } ],
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds.c2;
|
||||
var resultVal = result.outBinds[0];
|
||||
var compareBuffer = assist.compare2Buffers(resultVal, content);
|
||||
should.strictEqual(compareBuffer, true);
|
||||
cb();
|
||||
|
@ -460,7 +460,7 @@ describe('91. fetchBlobAsBuffer4.js', function() {
|
|||
], done);
|
||||
}); // 91.2.2
|
||||
|
||||
it.skip('91.2.3 bind by position - 2', function(done) {
|
||||
it('91.2.3 bind by position - 2', function(done) {
|
||||
var len = 500;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "91.2.3";
|
||||
|
@ -484,10 +484,10 @@ describe('91. fetchBlobAsBuffer4.js', function() {
|
|||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
[ sequence, sequence, null, { type: oracledb.BLOB, dir: oracledb.BIND_OUT } ],
|
||||
[ sequence, sequence, null, { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len } ],
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds.c2;
|
||||
var resultVal = result.outBinds[0];
|
||||
var compareBuffer = assist.compare2Buffers(resultVal, content);
|
||||
should.strictEqual(compareBuffer, true);
|
||||
cb();
|
||||
|
@ -615,7 +615,7 @@ describe('91. fetchBlobAsBuffer4.js', function() {
|
|||
], done);
|
||||
}); // 91.3.1
|
||||
|
||||
it.skip('91.3.2 bind by position - 1', function(done) {
|
||||
it('91.3.2 bind by position - 1', function(done) {
|
||||
var len = 1000;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "91.3.2";
|
||||
|
@ -637,11 +637,11 @@ describe('91. fetchBlobAsBuffer4.js', function() {
|
|||
connection.execute(
|
||||
sqlRun,
|
||||
[
|
||||
sequence, null, content, { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len }
|
||||
{ type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len }, sequence, null, content
|
||||
],
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds.output;
|
||||
var resultVal = result.outBinds[0];
|
||||
var compareBuffer = assist.compare2Buffers(resultVal, content);
|
||||
should.strictEqual(compareBuffer, true);
|
||||
cb();
|
||||
|
@ -690,7 +690,7 @@ describe('91. fetchBlobAsBuffer4.js', function() {
|
|||
], done);
|
||||
}); // 91.3.3
|
||||
|
||||
it.skip('91.3.4 bind by position - 2', function(done) {
|
||||
it('91.3.4 bind by position - 2', function(done) {
|
||||
var len = 1000;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "91.3.4";
|
||||
|
@ -712,11 +712,11 @@ describe('91. fetchBlobAsBuffer4.js', function() {
|
|||
connection.execute(
|
||||
sqlRun,
|
||||
[
|
||||
sequence, sequence, null, { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len }
|
||||
{ type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len }, sequence, sequence, null
|
||||
],
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds.output;
|
||||
var resultVal = result.outBinds[0];
|
||||
var compareBuffer = assist.compare2Buffers(resultVal, content);
|
||||
should.strictEqual(compareBuffer, true);
|
||||
cb();
|
||||
|
|
|
@ -165,7 +165,7 @@ describe('90. fetchClobAsString4.js', function() {
|
|||
done();
|
||||
}); // afterEach
|
||||
|
||||
it.skip('90.1.1 bind by position - 1', function(done) {
|
||||
it('90.1.1 bind by position - 1', function(done) {
|
||||
var len = 400;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "90.1.1";
|
||||
|
@ -185,10 +185,10 @@ describe('90. fetchClobAsString4.js', function() {
|
|||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
[ sequence, null, clobStr, { type: oracledb.CLOB, dir: oracledb.BIND_OUT } ],
|
||||
[ { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len }, sequence, null, clobStr],
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds.output;
|
||||
var resultVal = result.outBinds[0];
|
||||
verifyResult(resultVal, specialStr, clobStr);
|
||||
cb();
|
||||
}
|
||||
|
@ -234,7 +234,7 @@ describe('90. fetchClobAsString4.js', function() {
|
|||
], done);
|
||||
}); // 90.1.2
|
||||
|
||||
it.skip('90.1.3 bind by position - 2', function(done) {
|
||||
it('90.1.3 bind by position - 2', function(done) {
|
||||
var len = 400;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "90.1.2";
|
||||
|
@ -254,10 +254,10 @@ describe('90. fetchClobAsString4.js', function() {
|
|||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
[ sequence, sequence, null, { type: oracledb.CLOB, dir: oracledb.BIND_OUT } ],
|
||||
[ { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len }, sequence, sequence, null ],
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds.output;
|
||||
var resultVal = result.outBinds[0];
|
||||
verifyResult(resultVal, specialStr, clobStr);
|
||||
cb();
|
||||
}
|
||||
|
@ -332,7 +332,7 @@ describe('90. fetchClobAsString4.js', function() {
|
|||
done();
|
||||
}); // afterEach
|
||||
|
||||
it.skip('90.2.1 bind by position - 1', function(done) {
|
||||
it('90.2.1 bind by position - 1', function(done) {
|
||||
var len = 500;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "90.2.1";
|
||||
|
@ -352,10 +352,10 @@ describe('90. fetchClobAsString4.js', function() {
|
|||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
[ sequence, null, clobStr, { type: oracledb.CLOB, dir: oracledb.BIND_OUT } ],
|
||||
[ 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.c2;
|
||||
var resultVal = result.outBinds[0];
|
||||
verifyResult(resultVal, specialStr, clobStr);
|
||||
cb();
|
||||
}
|
||||
|
@ -401,7 +401,7 @@ describe('90. fetchClobAsString4.js', function() {
|
|||
], done);
|
||||
}); // 90.2.2
|
||||
|
||||
it.skip('90.2.3 bind by position - 2', function(done) {
|
||||
it('90.2.3 bind by position - 2', function(done) {
|
||||
var len = 500;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "90.2.3";
|
||||
|
@ -421,10 +421,10 @@ describe('90. fetchClobAsString4.js', function() {
|
|||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
[ sequence, sequence, null, { type: oracledb.CLOB, dir: oracledb.BIND_OUT } ],
|
||||
[ sequence, sequence, null, { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len } ],
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds.c2;
|
||||
var resultVal = result.outBinds[0];
|
||||
verifyResult(resultVal, specialStr, clobStr);
|
||||
cb();
|
||||
}
|
||||
|
@ -538,7 +538,7 @@ describe('90. fetchClobAsString4.js', function() {
|
|||
], done);
|
||||
}); // 90.3.1
|
||||
|
||||
it.skip('90.3.2 bind by position - 1', function(done) {
|
||||
it('90.3.2 bind by position - 1', function(done) {
|
||||
var len = 1000;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "90.3.1";
|
||||
|
@ -558,10 +558,10 @@ describe('90. fetchClobAsString4.js', function() {
|
|||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
[ sequence, null, clobStr, { type: oracledb.CLOB, dir: oracledb.BIND_OUT } ],
|
||||
[ { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len }, sequence, null, clobStr ],
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds.output;
|
||||
var resultVal = result.outBinds[0];
|
||||
verifyResult(resultVal, specialStr, clobStr);
|
||||
cb();
|
||||
}
|
||||
|
@ -607,7 +607,7 @@ describe('90. fetchClobAsString4.js', function() {
|
|||
], done);
|
||||
}); // 90.3.3
|
||||
|
||||
it.skip('90.3.4 bind by position - 2', function(done) {
|
||||
it('90.3.4 bind by position - 2', function(done) {
|
||||
var len = 1000;
|
||||
var sequence = insertID++;
|
||||
var specialStr = "90.3.4";
|
||||
|
@ -627,10 +627,10 @@ describe('90. fetchClobAsString4.js', function() {
|
|||
function(cb) {
|
||||
connection.execute(
|
||||
sqlRun,
|
||||
[ sequence, sequence, null, { type: oracledb.CLOB, dir: oracledb.BIND_OUT } ],
|
||||
[ { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len }, sequence, sequence, null ],
|
||||
function(err, result) {
|
||||
should.not.exist(err);
|
||||
var resultVal = result.outBinds.output;
|
||||
var resultVal = result.outBinds[0];
|
||||
verifyResult(resultVal, specialStr, clobStr);
|
||||
cb();
|
||||
}
|
||||
|
|
574
test/list.txt
574
test/list.txt
|
@ -262,6 +262,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
|
||||
|
@ -1927,34 +1932,579 @@ Overview of node-oracledb functional tests
|
|||
|
||||
90. fetchClobAsString4.js
|
||||
90.1 PLSQL FUNCTION RETURN CLOB to STRING
|
||||
- 90.1.1 bind by position - 1
|
||||
90.1.1 bind by position - 1
|
||||
90.1.2 bind by name - 1
|
||||
- 90.1.3 bind by position - 2
|
||||
90.1.3 bind by position - 2
|
||||
90.1.4 bind by name - 2
|
||||
90.2 PLSQL PROCEDURE BIND OUT CLOB to STRING
|
||||
- 90.2.1 bind by position - 1
|
||||
90.2.1 bind by position - 1
|
||||
90.2.2 bind by name - 1
|
||||
- 90.2.3 bind by position - 2
|
||||
90.2.3 bind by position - 2
|
||||
90.2.4 bind by name - 2
|
||||
90.3 PLSQL FUNCTION RETURN CLOB to VARCHAR2
|
||||
90.3.1 bind by name - 1
|
||||
- 90.3.2 bind by position - 1
|
||||
90.3.2 bind by position - 1
|
||||
90.3.3 bind by name - 2
|
||||
- 90.3.4 bind by position - 2
|
||||
90.3.4 bind by position - 2
|
||||
|
||||
91. fetchBlobAsBuffer4.js
|
||||
91.1 PLSQL FUNCTION RETURN BLOB to BUFFER
|
||||
- 91.1.1 bind by position - 1
|
||||
91.1.1 bind by position - 1
|
||||
91.1.2 bind by name - 1
|
||||
- 91.1.3 bind by position - 2
|
||||
91.1.3 bind by position - 2
|
||||
91.1.4 bind by name - 2
|
||||
91.2 PLSQL PROCEDURE BIND OUT BLOB to BUFFER
|
||||
- 91.2.1 bind by position - 1
|
||||
91.2.1 bind by position - 1
|
||||
91.2.2 bind by name - 1
|
||||
- 91.2.3 bind by position - 2
|
||||
91.2.3 bind by position - 2
|
||||
91.2.4 bind by name - 2
|
||||
91.3 PLSQL FUNCTION RETURN BLOB to RAW
|
||||
91.3.1 bind by name - 1
|
||||
- 91.3.2 bind by position - 1
|
||||
91.3.2 bind by position - 1
|
||||
91.3.3 bind by name - 2
|
||||
- 91.3.4 bind by position - 2
|
||||
91.3.4 bind by position - 2
|
||||
|
||||
92.binding_DMLInsert.js
|
||||
92.1 insert small value of oracledb.STRING/BUFFER
|
||||
92.1.1 oracledb.STRING <--> DB: NUMBER
|
||||
92.1.2 oracledb.STRING <--> DB: CHAR
|
||||
92.1.3 oracledb.STRING <--> DB: NCHAR
|
||||
92.1.4 oracledb.STRING <--> DB: VARCHAR2
|
||||
92.1.5 oracledb.STRING <--> DB: FLOAT
|
||||
92.1.6 oracledb.STRING <--> DB: BINARY_FLOAT
|
||||
92.1.7 oracledb.STRING <--> DB: BINARY_DOUBLE
|
||||
92.1.8 oracledb.STRING <--> DB: DATE
|
||||
92.1.9 oracledb.STRING <--> DB: TIMESTAMP
|
||||
92.1.10 oracledb.STRING <--> DB: RAW
|
||||
92.1.11 oracledb.STRING <--> DB: CLOB
|
||||
92.1.12 oracledb.STRING <--> DB: BLOB
|
||||
92.1.13 oracledb.BUFFER <--> DB: NUMBER
|
||||
92.1.14 oracledb.BUFFER <--> DB: CHAR
|
||||
92.1.15 oracledb.BUFFER <--> DB: NCHAR
|
||||
92.1.16 oracledb.BUFFER <--> DB: VARCHAR2
|
||||
92.1.17 oracledb.BUFFER <--> DB: FLOAT
|
||||
92.1.18 oracledb.BUFFER <--> DB: BINARY_FLOAT
|
||||
92.1.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE
|
||||
92.1.20 oracledb.BUFFER <--> DB: DATE
|
||||
92.1.21 oracledb.BUFFER <--> DB: TIMESTAMP
|
||||
92.1.22 oracledb.BUFFER <--> DB: RAW
|
||||
92.1.23 oracledb.BUFFER <--> DB: CLOB
|
||||
92.1.24 oracledb.BUFFER <--> DB: BLOB
|
||||
92.2 insert null value of oracledb.STRING/BUFFER
|
||||
92.2.1 oracledb.STRING <--> DB: NUMBER
|
||||
92.2.2 oracledb.STRING <--> DB: CHAR
|
||||
92.2.3 oracledb.STRING <--> DB: NCHAR
|
||||
92.2.4 oracledb.STRING <--> DB: VARCHAR2
|
||||
92.2.5 oracledb.STRING <--> DB: FLOAT
|
||||
92.2.6 oracledb.STRING <--> DB: BINARY_FLOAT
|
||||
92.2.7 oracledb.STRING <--> DB: BINARY_DOUBLE
|
||||
92.2.8 oracledb.STRING <--> DB: DATE
|
||||
92.2.9 oracledb.STRING <--> DB: TIMESTAMP
|
||||
92.2.10 oracledb.STRING <--> DB: RAW
|
||||
92.2.11 oracledb.STRING <--> DB: CLOB
|
||||
92.2.12 oracledb.STRING <--> DB: BLOB
|
||||
92.2.13 oracledb.BUFFER <--> DB: NUMBER
|
||||
92.2.14 oracledb.BUFFER <--> DB: CHAR
|
||||
92.2.15 oracledb.BUFFER <--> DB: NCHAR
|
||||
92.2.16 oracledb.BUFFER <--> DB: VARCHAR2
|
||||
92.2.17 oracledb.BUFFER <--> DB: FLOAT
|
||||
92.2.18 oracledb.BUFFER <--> DB: BINARY_FLOAT
|
||||
92.2.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE
|
||||
92.2.20 oracledb.BUFFER <--> DB: DATE
|
||||
92.2.21 oracledb.BUFFER <--> DB: TIMESTAMP
|
||||
92.2.22 oracledb.BUFFER <--> DB: RAW
|
||||
92.2.23 oracledb.BUFFER <--> DB: CLOB
|
||||
92.2.24 oracledb.BUFFER <--> DB: BLOB
|
||||
92.3 insert large value of oracledb.STRING/BUFFER
|
||||
92.3.1 oracledb.STRING <--> DB: NUMBER
|
||||
92.3.2 oracledb.STRING <--> DB: CHAR
|
||||
92.3.3 oracledb.STRING <--> DB: NCHAR
|
||||
92.3.4 oracledb.STRING <--> DB: VARCHAR2
|
||||
92.3.5 oracledb.STRING <--> DB: FLOAT
|
||||
92.3.6 oracledb.STRING <--> DB: BINARY_FLOAT
|
||||
92.3.7 oracledb.STRING <--> DB: BINARY_DOUBLE
|
||||
92.3.8 oracledb.STRING <--> DB: DATE
|
||||
92.3.9 oracledb.STRING <--> DB: TIMESTAMP
|
||||
92.3.10 oracledb.STRING <--> DB: RAW
|
||||
92.3.11 oracledb.STRING <--> DB: CLOB
|
||||
92.3.12 oracledb.STRING <--> DB: BLOB
|
||||
92.3.13 oracledb.BUFFER <--> DB: NUMBER
|
||||
92.3.14 oracledb.BUFFER <--> DB: CHAR
|
||||
92.3.15 oracledb.BUFFER <--> DB: NCHAR
|
||||
92.3.16 oracledb.BUFFER <--> DB: VARCHAR2
|
||||
92.3.17 oracledb.BUFFER <--> DB: FLOAT
|
||||
92.3.18 oracledb.BUFFER <--> DB: BINARY_FLOAT
|
||||
92.3.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE
|
||||
92.3.20 oracledb.BUFFER <--> DB: DATE
|
||||
92.3.21 oracledb.BUFFER <--> DB: TIMESTAMP
|
||||
92.3.22 oracledb.BUFFER <--> DB: RAW
|
||||
92.3.23 oracledb.BUFFER <--> DB: CLOB
|
||||
92.3.24 oracledb.BUFFER <--> DB: BLOB
|
||||
|
||||
93.binding_procedureBindIn.js
|
||||
93.1 PLSQL procedure: bind in small value of oracledb.STRING/BUFFER
|
||||
93.1.1 oracledb.STRING <--> DB: NUMBER
|
||||
93.1.2 oracledb.STRING <--> DB: CHAR
|
||||
93.1.3 oracledb.STRING <--> DB: NCHAR
|
||||
93.1.4 oracledb.STRING <--> DB: VARCHAR2
|
||||
93.1.5 oracledb.STRING <--> DB: FLOAT
|
||||
93.1.6 oracledb.STRING <--> DB: BINARY_FLOAT
|
||||
93.1.7 oracledb.STRING <--> DB: BINARY_DOUBLE
|
||||
93.1.8 oracledb.STRING <--> DB: DATE
|
||||
93.1.9 oracledb.STRING <--> DB: TIMESTAMP
|
||||
93.1.10 oracledb.STRING <--> DB: RAW
|
||||
93.1.11 oracledb.STRING <--> DB: CLOB
|
||||
93.1.12 oracledb.STRING <--> DB: BLOB
|
||||
93.1.13 oracledb.BUFFER <--> DB: NUMBER
|
||||
93.1.14 oracledb.BUFFER <--> DB: CHAR
|
||||
93.1.15 oracledb.BUFFER <--> DB: NCHAR
|
||||
93.1.16 oracledb.BUFFER <--> DB: VARCHAR2
|
||||
93.1.17 oracledb.BUFFER <--> DB: FLOAT
|
||||
93.1.18 oracledb.BUFFER <--> DB: BINARY_FLOAT
|
||||
93.1.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE
|
||||
93.1.20 oracledb.BUFFER <--> DB: DATE
|
||||
93.1.21 oracledb.BUFFER <--> DB: TIMESTAMP
|
||||
93.1.22 oracledb.BUFFER <--> DB: RAW
|
||||
93.1.23 oracledb.BUFFER <--> DB: CLOB
|
||||
93.1.24 oracledb.BUFFER <--> DB: BLOB
|
||||
93.2 PLSQL procedure: bind in null value of oracledb.STRING/BUFFER
|
||||
93.2.1 oracledb.STRING <--> DB: NUMBER
|
||||
93.2.2 oracledb.STRING <--> DB: CHAR
|
||||
93.2.3 oracledb.STRING <--> DB: NCHAR
|
||||
93.2.4 oracledb.STRING <--> DB: VARCHAR2
|
||||
93.2.5 oracledb.STRING <--> DB: FLOAT
|
||||
93.2.6 oracledb.STRING <--> DB: BINARY_FLOAT
|
||||
93.2.7 oracledb.STRING <--> DB: BINARY_DOUBLE
|
||||
93.2.8 oracledb.STRING <--> DB: DATE
|
||||
93.2.9 oracledb.STRING <--> DB: TIMESTAMP
|
||||
93.2.10 oracledb.STRING <--> DB: RAW
|
||||
93.2.11 oracledb.STRING <--> DB: CLOB
|
||||
93.2.12 oracledb.STRING <--> DB: BLOB
|
||||
93.2.13 oracledb.BUFFER <--> DB: NUMBER
|
||||
93.2.14 oracledb.BUFFER <--> DB: CHAR
|
||||
93.2.15 oracledb.BUFFER <--> DB: NCHAR
|
||||
93.2.16 oracledb.BUFFER <--> DB: VARCHAR2
|
||||
93.2.17 oracledb.BUFFER <--> DB: FLOAT
|
||||
93.2.18 oracledb.BUFFER <--> DB: BINARY_FLOAT
|
||||
93.2.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE
|
||||
93.2.20 oracledb.BUFFER <--> DB: DATE
|
||||
93.2.21 oracledb.BUFFER <--> DB: TIMESTAMP
|
||||
93.2.22 oracledb.BUFFER <--> DB: RAW
|
||||
93.2.23 oracledb.BUFFER <--> DB: CLOB
|
||||
93.2.24 oracledb.BUFFER <--> DB: BLOB
|
||||
|
||||
94.binding_procedureBindInout.js
|
||||
94.1 PLSQL procedure: bind inout small value of oracledb.STRING/BUFFER
|
||||
94.1.1 oracledb.STRING <--> DB: NUMBER
|
||||
94.1.2 oracledb.STRING <--> DB: CHAR
|
||||
94.1.3 oracledb.STRING <--> DB: NCHAR
|
||||
94.1.4 oracledb.STRING <--> DB: VARCHAR2
|
||||
94.1.5 oracledb.STRING <--> DB: FLOAT
|
||||
94.1.6 oracledb.STRING <--> DB: BINARY_FLOAT
|
||||
94.1.7 oracledb.STRING <--> DB: BINARY_DOUBLE
|
||||
94.1.8 oracledb.STRING <--> DB: DATE
|
||||
94.1.9 oracledb.STRING <--> DB: TIMESTAMP
|
||||
94.1.10 oracledb.STRING <--> DB: RAW
|
||||
94.1.11 oracledb.STRING <--> DB: CLOB
|
||||
94.1.12 oracledb.STRING <--> DB: BLOB
|
||||
94.1.13 oracledb.BUFFER <--> DB: NUMBER
|
||||
94.1.14 oracledb.BUFFER <--> DB: CHAR
|
||||
94.1.15 oracledb.BUFFER <--> DB: NCHAR
|
||||
94.1.16 oracledb.BUFFER <--> DB: VARCHAR2
|
||||
94.1.17 oracledb.BUFFER <--> DB: FLOAT
|
||||
94.1.18 oracledb.BUFFER <--> DB: BINARY_FLOAT
|
||||
94.1.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE
|
||||
94.1.20 oracledb.BUFFER <--> DB: DATE
|
||||
94.1.21 oracledb.BUFFER <--> DB: TIMESTAMP
|
||||
94.1.22 oracledb.BUFFER <--> DB: RAW
|
||||
94.1.23 oracledb.BUFFER <--> DB: CLOB
|
||||
94.1.24 oracledb.BUFFER <--> DB: BLOB
|
||||
94.2 PLSQL procedure: bind inout null value of oracledb.STRING/BUFFER
|
||||
94.2.1 oracledb.STRING <--> DB: NUMBER
|
||||
94.2.2 oracledb.STRING <--> DB: CHAR
|
||||
94.2.3 oracledb.STRING <--> DB: NCHAR
|
||||
94.2.4 oracledb.STRING <--> DB: VARCHAR2
|
||||
94.2.5 oracledb.STRING <--> DB: FLOAT
|
||||
94.2.6 oracledb.STRING <--> DB: BINARY_FLOAT
|
||||
94.2.7 oracledb.STRING <--> DB: BINARY_DOUBLE
|
||||
94.2.8 oracledb.STRING <--> DB: DATE
|
||||
94.2.9 oracledb.STRING <--> DB: TIMESTAMP
|
||||
94.2.10 oracledb.STRING <--> DB: RAW
|
||||
94.2.11 oracledb.STRING <--> DB: CLOB
|
||||
94.2.12 oracledb.STRING <--> DB: BLOB
|
||||
94.2.13 oracledb.BUFFER <--> DB: NUMBER
|
||||
94.2.14 oracledb.BUFFER <--> DB: CHAR
|
||||
94.2.15 oracledb.BUFFER <--> DB: NCHAR
|
||||
94.2.16 oracledb.BUFFER <--> DB: VARCHAR2
|
||||
94.2.17 oracledb.BUFFER <--> DB: FLOAT
|
||||
94.2.18 oracledb.BUFFER <--> DB: BINARY_FLOAT
|
||||
94.2.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE
|
||||
94.2.20 oracledb.BUFFER <--> DB: DATE
|
||||
94.2.21 oracledb.BUFFER <--> DB: TIMESTAMP
|
||||
94.2.22 oracledb.BUFFER <--> DB: RAW
|
||||
94.2.23 oracledb.BUFFER <--> DB: CLOB
|
||||
94.2.24 oracledb.BUFFER <--> DB: BLOB
|
||||
|
||||
95.binding_functionBindInout.js
|
||||
95.1 PLSQL function: bind inout small value of oracledb.STRING/BUFFER
|
||||
95.1.1 oracledb.STRING <--> DB: NUMBER
|
||||
95.1.2 oracledb.STRING <--> DB: CHAR
|
||||
95.1.3 oracledb.STRING <--> DB: NCHAR
|
||||
95.1.4 oracledb.STRING <--> DB: VARCHAR2
|
||||
95.1.5 oracledb.STRING <--> DB: FLOAT
|
||||
95.1.6 oracledb.STRING <--> DB: BINARY_FLOAT
|
||||
95.1.7 oracledb.STRING <--> DB: BINARY_DOUBLE
|
||||
95.1.8 oracledb.STRING <--> DB: DATE
|
||||
95.1.9 oracledb.STRING <--> DB: TIMESTAMP
|
||||
95.1.10 oracledb.STRING <--> DB: RAW
|
||||
95.1.11 oracledb.STRING <--> DB: CLOB
|
||||
95.1.12 oracledb.STRING <--> DB: BLOB
|
||||
95.1.13 oracledb.BUFFER <--> DB: NUMBER
|
||||
95.1.14 oracledb.BUFFER <--> DB: CHAR
|
||||
95.1.15 oracledb.BUFFER <--> DB: NCHAR
|
||||
95.1.16 oracledb.BUFFER <--> DB: VARCHAR2
|
||||
95.1.17 oracledb.BUFFER <--> DB: FLOAT
|
||||
95.1.18 oracledb.BUFFER <--> DB: BINARY_FLOAT
|
||||
95.1.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE
|
||||
95.1.20 oracledb.BUFFER <--> DB: DATE
|
||||
95.1.21 oracledb.BUFFER <--> DB: TIMESTAMP
|
||||
95.1.22 oracledb.BUFFER <--> DB: RAW
|
||||
95.1.23 oracledb.BUFFER <--> DB: CLOB
|
||||
95.1.24 oracledb.BUFFER <--> DB: BLOB
|
||||
95.2 PLSQL function: bind inout null value of oracledb.STRING/BUFFER
|
||||
95.2.1 oracledb.STRING <--> DB: NUMBER
|
||||
95.2.2 oracledb.STRING <--> DB: CHAR
|
||||
95.2.3 oracledb.STRING <--> DB: NCHAR
|
||||
95.2.4 oracledb.STRING <--> DB: VARCHAR2
|
||||
95.2.5 oracledb.STRING <--> DB: FLOAT
|
||||
95.2.6 oracledb.STRING <--> DB: BINARY_FLOAT
|
||||
95.2.7 oracledb.STRING <--> DB: BINARY_DOUBLE
|
||||
95.2.8 oracledb.STRING <--> DB: DATE
|
||||
95.2.9 oracledb.STRING <--> DB: TIMESTAMP
|
||||
95.2.10 oracledb.STRING <--> DB: RAW
|
||||
95.2.11 oracledb.STRING <--> DB: CLOB
|
||||
95.2.12 oracledb.STRING <--> DB: BLOB
|
||||
95.2.13 oracledb.BUFFER <--> DB: NUMBER
|
||||
95.2.14 oracledb.BUFFER <--> DB: CHAR
|
||||
95.2.15 oracledb.BUFFER <--> DB: NCHAR
|
||||
95.2.16 oracledb.BUFFER <--> DB: VARCHAR2
|
||||
95.2.17 oracledb.BUFFER <--> DB: FLOAT
|
||||
95.2.18 oracledb.BUFFER <--> DB: BINARY_FLOAT
|
||||
95.2.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE
|
||||
95.2.20 oracledb.BUFFER <--> DB: DATE
|
||||
95.2.21 oracledb.BUFFER <--> DB: TIMESTAMP
|
||||
95.2.22 oracledb.BUFFER <--> DB: RAW
|
||||
95.2.23 oracledb.BUFFER <--> DB: CLOB
|
||||
95.2.24 oracledb.BUFFER <--> DB: BLOB
|
||||
|
||||
96.binding_procedureBindOut.js
|
||||
96.1 PLSQL procedure: bind out small value to oracledb.STRING/BUFFER
|
||||
96.1.1 oracledb.STRING <--> DB: NUMBER
|
||||
96.1.2 oracledb.STRING <--> DB: CHAR
|
||||
96.1.3 oracledb.STRING <--> DB: NCHAR
|
||||
96.1.4 oracledb.STRING <--> DB: VARCHAR2
|
||||
96.1.5 oracledb.STRING <--> DB: FLOAT
|
||||
96.1.6 oracledb.STRING <--> DB: BINARY_FLOAT
|
||||
96.1.7 oracledb.STRING <--> DB: BINARY_DOUBLE
|
||||
96.1.8 oracledb.STRING <--> DB: DATE
|
||||
96.1.9 oracledb.STRING <--> DB: TIMESTAMP
|
||||
96.1.10 oracledb.STRING <--> DB: RAW
|
||||
96.1.11 oracledb.STRING <--> DB: CLOB
|
||||
96.1.12 oracledb.STRING <--> DB: BLOB
|
||||
96.1.13 oracledb.BUFFER <--> DB: NUMBER
|
||||
96.1.14 oracledb.BUFFER <--> DB: CHAR
|
||||
96.1.15 oracledb.BUFFER <--> DB: NCHAR
|
||||
96.1.16 oracledb.BUFFER <--> DB: VARCHAR2
|
||||
96.1.17 oracledb.BUFFER <--> DB: FLOAT
|
||||
96.1.18 oracledb.BUFFER <--> DB: BINARY_FLOAT
|
||||
96.1.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE
|
||||
96.1.20 oracledb.BUFFER <--> DB: DATE
|
||||
96.1.21 oracledb.BUFFER <--> DB: TIMESTAMP
|
||||
96.1.22 oracledb.BUFFER <--> DB: RAW
|
||||
96.1.23 oracledb.BUFFER <--> DB: CLOB
|
||||
96.1.24 oracledb.BUFFER <--> DB: BLOB
|
||||
96.2 PLSQL procedure: bind out null value to oracledb.STRING/BUFFER
|
||||
96.2.1 oracledb.STRING <--> DB: NUMBER
|
||||
96.2.2 oracledb.STRING <--> DB: CHAR
|
||||
96.2.3 oracledb.STRING <--> DB: NCHAR
|
||||
96.2.4 oracledb.STRING <--> DB: VARCHAR2
|
||||
96.2.5 oracledb.STRING <--> DB: FLOAT
|
||||
96.2.6 oracledb.STRING <--> DB: BINARY_FLOAT
|
||||
96.2.7 oracledb.STRING <--> DB: BINARY_DOUBLE
|
||||
96.2.8 oracledb.STRING <--> DB: DATE
|
||||
96.2.9 oracledb.STRING <--> DB: TIMESTAMP
|
||||
96.2.10 oracledb.STRING <--> DB: RAW
|
||||
96.2.11 oracledb.STRING <--> DB: CLOB
|
||||
96.2.12 oracledb.STRING <--> DB: BLOB
|
||||
96.2.13 oracledb.BUFFER <--> DB: NUMBER
|
||||
96.2.14 oracledb.BUFFER <--> DB: CHAR
|
||||
96.2.15 oracledb.BUFFER <--> DB: NCHAR
|
||||
96.2.16 oracledb.BUFFER <--> DB: VARCHAR2
|
||||
96.2.17 oracledb.BUFFER <--> DB: FLOAT
|
||||
96.2.18 oracledb.BUFFER <--> DB: BINARY_FLOAT
|
||||
96.2.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE
|
||||
96.2.20 oracledb.BUFFER <--> DB: DATE
|
||||
96.2.21 oracledb.BUFFER <--> DB: TIMESTAMP
|
||||
96.2.22 oracledb.BUFFER <--> DB: RAW
|
||||
96.2.23 oracledb.BUFFER <--> DB: CLOB
|
||||
96.2.24 oracledb.BUFFER <--> DB: BLOB
|
||||
|
||||
97.binding_functionBindOut.js
|
||||
97.1 PLSQL function: bind out small value to oracledb.STRING/BUFFER
|
||||
97.1.1 oracledb.STRING <--> DB: NUMBER
|
||||
97.1.2 oracledb.STRING <--> DB: CHAR
|
||||
97.1.3 oracledb.STRING <--> DB: NCHAR
|
||||
97.1.4 oracledb.STRING <--> DB: VARCHAR2
|
||||
97.1.5 oracledb.STRING <--> DB: FLOAT
|
||||
97.1.6 oracledb.STRING <--> DB: BINARY_FLOAT
|
||||
97.1.7 oracledb.STRING <--> DB: BINARY_DOUBLE
|
||||
97.1.8 oracledb.STRING <--> DB: DATE
|
||||
97.1.9 oracledb.STRING <--> DB: TIMESTAMP
|
||||
97.1.10 oracledb.STRING <--> DB: RAW
|
||||
97.1.11 oracledb.STRING <--> DB: CLOB
|
||||
97.1.12 oracledb.STRING <--> DB: BLOB
|
||||
97.1.13 oracledb.BUFFER <--> DB: NUMBER
|
||||
97.1.14 oracledb.BUFFER <--> DB: CHAR
|
||||
97.1.15 oracledb.BUFFER <--> DB: NCHAR
|
||||
97.1.16 oracledb.BUFFER <--> DB: VARCHAR2
|
||||
97.1.17 oracledb.BUFFER <--> DB: FLOAT
|
||||
97.1.18 oracledb.BUFFER <--> DB: BINARY_FLOAT
|
||||
97.1.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE
|
||||
97.1.20 oracledb.BUFFER <--> DB: DATE
|
||||
97.1.21 oracledb.BUFFER <--> DB: TIMESTAMP
|
||||
97.1.22 oracledb.BUFFER <--> DB: RAW
|
||||
97.1.23 oracledb.BUFFER <--> DB: CLOB
|
||||
97.1.24 oracledb.BUFFER <--> DB: BLOB
|
||||
97.2 PLSQL function: bind out null value to oracledb.STRING/BUFFER
|
||||
97.2.1 oracledb.STRING <--> DB: NUMBER
|
||||
97.2.2 oracledb.STRING <--> DB: CHAR
|
||||
97.2.3 oracledb.STRING <--> DB: NCHAR
|
||||
97.2.4 oracledb.STRING <--> DB: VARCHAR2
|
||||
97.2.5 oracledb.STRING <--> DB: FLOAT
|
||||
97.2.6 oracledb.STRING <--> DB: BINARY_FLOAT
|
||||
97.2.7 oracledb.STRING <--> DB: BINARY_DOUBLE
|
||||
97.2.8 oracledb.STRING <--> DB: DATE
|
||||
97.2.9 oracledb.STRING <--> DB: TIMESTAMP
|
||||
97.2.10 oracledb.STRING <--> DB: RAW
|
||||
97.2.11 oracledb.STRING <--> DB: CLOB
|
||||
97.2.12 oracledb.STRING <--> DB: BLOB
|
||||
97.2.13 oracledb.BUFFER <--> DB: NUMBER
|
||||
97.2.14 oracledb.BUFFER <--> DB: CHAR
|
||||
97.2.15 oracledb.BUFFER <--> DB: NCHAR
|
||||
97.2.16 oracledb.BUFFER <--> DB: VARCHAR2
|
||||
97.2.17 oracledb.BUFFER <--> DB: FLOAT
|
||||
97.2.18 oracledb.BUFFER <--> DB: BINARY_FLOAT
|
||||
97.2.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE
|
||||
97.2.20 oracledb.BUFFER <--> DB: DATE
|
||||
97.2.21 oracledb.BUFFER <--> DB: TIMESTAMP
|
||||
97.2.22 oracledb.BUFFER <--> DB: RAW
|
||||
97.2.23 oracledb.BUFFER <--> DB: CLOB
|
||||
97.2.24 oracledb.BUFFER <--> DB: BLOB
|
||||
|
||||
98.binding_DMLReturningInto.js
|
||||
98.1 bind out small value
|
||||
98.1.1 oracledb.STRING <--> DB: NUMBER
|
||||
98.1.2 oracledb.STRING <--> DB: CHAR
|
||||
98.1.3 oracledb.STRING <--> DB: NCHAR
|
||||
98.1.4 oracledb.STRING <--> DB: VARCHAR2
|
||||
98.1.5 oracledb.STRING <--> DB: FLOAT
|
||||
98.1.6 oracledb.STRING <--> DB: BINARY_FLOAT
|
||||
98.1.7 oracledb.STRING <--> DB: BINARY_DOUBLE
|
||||
98.1.8 oracledb.STRING <--> DB: DATE
|
||||
98.1.9 oracledb.STRING <--> DB: TIMESTAMP
|
||||
98.1.10 oracledb.STRING <--> DB: RAW
|
||||
98.1.11 oracledb.STRING <--> DB: CLOB
|
||||
98.1.12 oracledb.STRING <--> DB: BLOB
|
||||
98.1.13 oracledb.BUFFER <--> DB: NUMBER
|
||||
98.1.14 oracledb.BUFFER <--> DB: CHAR
|
||||
98.1.15 oracledb.BUFFER <--> DB: NCHAR
|
||||
98.1.16 oracledb.BUFFER <--> DB: VARCHAR2
|
||||
98.1.17 oracledb.BUFFER <--> DB: FLOAT
|
||||
98.1.18 oracledb.BUFFER <--> DB: BINARY_FLOAT
|
||||
98.1.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE
|
||||
98.1.20 oracledb.BUFFER <--> DB: DATE
|
||||
98.1.21 oracledb.BUFFER <--> DB: TIMESTAMP
|
||||
98.1.22 oracledb.BUFFER <--> DB: RAW
|
||||
98.1.23 oracledb.BUFFER <--> DB: CLOB
|
||||
98.1.24 oracledb.BUFFER <--> DB: BLOB
|
||||
98.2 bind out null value
|
||||
98.2.1 oracledb.STRING <--> DB: NUMBER
|
||||
98.2.2 oracledb.STRING <--> DB: CHAR
|
||||
98.2.3 oracledb.STRING <--> DB: NCHAR
|
||||
98.2.4 oracledb.STRING <--> DB: VARCHAR2
|
||||
98.2.5 oracledb.STRING <--> DB: FLOAT
|
||||
98.2.6 oracledb.STRING <--> DB: BINARY_FLOAT
|
||||
98.2.7 oracledb.STRING <--> DB: BINARY_DOUBLE
|
||||
98.2.8 oracledb.STRING <--> DB: DATE
|
||||
98.2.9 oracledb.STRING <--> DB: TIMESTAMP
|
||||
98.2.10 oracledb.STRING <--> DB: RAW
|
||||
98.2.11 oracledb.STRING <--> DB: CLOB
|
||||
98.2.12 oracledb.STRING <--> DB: BLOB
|
||||
98.2.13 oracledb.BUFFER <--> DB: NUMBER
|
||||
98.2.14 oracledb.BUFFER <--> DB: CHAR
|
||||
98.2.15 oracledb.BUFFER <--> DB: NCHAR
|
||||
98.2.16 oracledb.BUFFER <--> DB: VARCHAR2
|
||||
98.2.17 oracledb.BUFFER <--> DB: FLOAT
|
||||
98.2.18 oracledb.BUFFER <--> DB: BINARY_FLOAT
|
||||
98.2.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE
|
||||
98.2.20 oracledb.BUFFER <--> DB: DATE
|
||||
98.2.21 oracledb.BUFFER <--> DB: TIMESTAMP
|
||||
98.2.22 oracledb.BUFFER <--> DB: RAW
|
||||
98.2.23 oracledb.BUFFER <--> DB: CLOB
|
||||
98.2.24 oracledb.BUFFER <--> DB: BLOB
|
||||
|
||||
99.binding_functionBindIn.js
|
||||
99.1 PLSQL function: bind in small value of oracledb.STRING/BUFFER
|
||||
99.1.1 oracledb.STRING <--> DB: NUMBER
|
||||
99.1.2 oracledb.STRING <--> DB: CHAR
|
||||
99.1.3 oracledb.STRING <--> DB: NCHAR
|
||||
99.1.4 oracledb.STRING <--> DB: VARCHAR2
|
||||
99.1.5 oracledb.STRING <--> DB: FLOAT
|
||||
99.1.6 oracledb.STRING <--> DB: BINARY_FLOAT
|
||||
99.1.7 oracledb.STRING <--> DB: BINARY_DOUBLE
|
||||
99.1.8 oracledb.STRING <--> DB: DATE
|
||||
99.1.9 oracledb.STRING <--> DB: TIMESTAMP
|
||||
99.1.10 oracledb.STRING <--> DB: RAW
|
||||
99.1.11 oracledb.STRING <--> DB: CLOB
|
||||
99.1.12 oracledb.STRING <--> DB: BLOB
|
||||
99.1.13 oracledb.BUFFER <--> DB: NUMBER
|
||||
99.1.14 oracledb.BUFFER <--> DB: CHAR
|
||||
99.1.15 oracledb.BUFFER <--> DB: NCHAR
|
||||
99.1.16 oracledb.BUFFER <--> DB: VARCHAR2
|
||||
99.1.17 oracledb.BUFFER <--> DB: FLOAT
|
||||
99.1.18 oracledb.BUFFER <--> DB: BINARY_FLOAT
|
||||
99.1.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE
|
||||
99.1.20 oracledb.BUFFER <--> DB: DATE
|
||||
99.1.21 oracledb.BUFFER <--> DB: TIMESTAMP
|
||||
99.1.22 oracledb.BUFFER <--> DB: RAW
|
||||
99.1.23 oracledb.BUFFER <--> DB: CLOB
|
||||
99.1.24 oracledb.BUFFER <--> DB: BLOB
|
||||
99.2 PLSQL function: bind in null value of oracledb.STRING/BUFFER
|
||||
99.2.1 oracledb.STRING <--> DB: NUMBER
|
||||
99.2.2 oracledb.STRING <--> DB: CHAR
|
||||
99.2.3 oracledb.STRING <--> DB: NCHAR
|
||||
99.2.4 oracledb.STRING <--> DB: VARCHAR2
|
||||
99.2.5 oracledb.STRING <--> DB: FLOAT
|
||||
99.2.6 oracledb.STRING <--> DB: BINARY_FLOAT
|
||||
99.2.7 oracledb.STRING <--> DB: BINARY_DOUBLE
|
||||
99.2.8 oracledb.STRING <--> DB: DATE
|
||||
99.2.9 oracledb.STRING <--> DB: TIMESTAMP
|
||||
99.2.10 oracledb.STRING <--> DB: RAW
|
||||
99.2.11 oracledb.STRING <--> DB: CLOB
|
||||
99.2.12 oracledb.STRING <--> DB: BLOB
|
||||
99.2.13 oracledb.BUFFER <--> DB: NUMBER
|
||||
99.2.14 oracledb.BUFFER <--> DB: CHAR
|
||||
99.2.15 oracledb.BUFFER <--> DB: NCHAR
|
||||
99.2.16 oracledb.BUFFER <--> DB: VARCHAR2
|
||||
99.2.17 oracledb.BUFFER <--> DB: FLOAT
|
||||
99.2.18 oracledb.BUFFER <--> DB: BINARY_FLOAT
|
||||
99.2.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE
|
||||
99.2.20 oracledb.BUFFER <--> DB: DATE
|
||||
99.2.21 oracledb.BUFFER <--> DB: TIMESTAMP
|
||||
99.2.22 oracledb.BUFFER <--> DB: RAW
|
||||
99.2.23 oracledb.BUFFER <--> DB: CLOB
|
||||
99.2.24 oracledb.BUFFER <--> DB: BLOB
|
||||
|
||||
100.binding_defaultBindIn.js
|
||||
100.1 PLSQL procedure: bind in null value with default type and dir
|
||||
100.1.1 oracledb.STRING <--> DB: NUMBER
|
||||
100.1.2 oracledb.STRING <--> DB: CHAR
|
||||
100.1.3 oracledb.STRING <--> DB: NCHAR
|
||||
100.1.4 oracledb.STRING <--> DB: VARCHAR2
|
||||
100.1.5 oracledb.STRING <--> DB: FLOAT
|
||||
100.1.6 oracledb.STRING <--> DB: BINARY_FLOAT
|
||||
100.1.7 oracledb.STRING <--> DB: BINARY_DOUBLE
|
||||
100.1.8 oracledb.STRING <--> DB: DATE
|
||||
100.1.9 oracledb.STRING <--> DB: TIMESTAMP
|
||||
100.1.10 oracledb.STRING <--> DB: RAW
|
||||
100.1.11 oracledb.STRING <--> DB: CLOB
|
||||
100.1.12 oracledb.STRING <--> DB: BLOB
|
||||
100.1.13 oracledb.BUFFER <--> DB: NUMBER
|
||||
100.1.14 oracledb.BUFFER <--> DB: CHAR
|
||||
100.1.15 oracledb.BUFFER <--> DB: NCHAR
|
||||
100.1.16 oracledb.BUFFER <--> DB: VARCHAR2
|
||||
100.1.17 oracledb.BUFFER <--> DB: FLOAT
|
||||
100.1.18 oracledb.BUFFER <--> DB: BINARY_FLOAT
|
||||
100.1.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE
|
||||
100.1.20 oracledb.BUFFER <--> DB: DATE
|
||||
100.1.21 oracledb.BUFFER <--> DB: TIMESTAMP
|
||||
100.1.22 oracledb.BUFFER <--> DB: RAW
|
||||
100.1.23 oracledb.BUFFER <--> DB: CLOB
|
||||
100.1.24 oracledb.BUFFER <--> DB: BLOB
|
||||
100.2 PLSQL function: bind in null value with default type and dir
|
||||
100.2.1 oracledb.STRING <--> DB: NUMBER
|
||||
100.2.2 oracledb.STRING <--> DB: CHAR
|
||||
100.2.3 oracledb.STRING <--> DB: NCHAR
|
||||
100.2.4 oracledb.STRING <--> DB: VARCHAR2
|
||||
100.2.5 oracledb.STRING <--> DB: FLOAT
|
||||
100.2.6 oracledb.STRING <--> DB: BINARY_FLOAT
|
||||
100.2.7 oracledb.STRING <--> DB: BINARY_DOUBLE
|
||||
100.2.8 oracledb.STRING <--> DB: DATE
|
||||
100.2.9 oracledb.STRING <--> DB: TIMESTAMP
|
||||
100.2.10 oracledb.STRING <--> DB: RAW
|
||||
100.2.11 oracledb.STRING <--> DB: CLOB
|
||||
100.2.12 oracledb.STRING <--> DB: BLOB
|
||||
100.2.13 oracledb.BUFFER <--> DB: NUMBER
|
||||
100.2.14 oracledb.BUFFER <--> DB: CHAR
|
||||
100.2.15 oracledb.BUFFER <--> DB: NCHAR
|
||||
100.2.16 oracledb.BUFFER <--> DB: VARCHAR2
|
||||
100.2.17 oracledb.BUFFER <--> DB: FLOAT
|
||||
100.2.18 oracledb.BUFFER <--> DB: BINARY_FLOAT
|
||||
100.2.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE
|
||||
100.2.20 oracledb.BUFFER <--> DB: DATE
|
||||
100.2.21 oracledb.BUFFER <--> DB: TIMESTAMP
|
||||
100.2.22 oracledb.BUFFER <--> DB: RAW
|
||||
100.2.23 oracledb.BUFFER <--> DB: CLOB
|
||||
100.2.24 oracledb.BUFFER <--> DB: BLOB
|
||||
|
||||
101.binding_defaultBindInout.js
|
||||
101.1 PLSQL procedure: bind out null value with default type and dir
|
||||
101.1.1 oracledb.STRING <--> DB: NUMBER
|
||||
101.1.2 oracledb.STRING <--> DB: CHAR
|
||||
101.1.3 oracledb.STRING <--> DB: NCHAR
|
||||
101.1.4 oracledb.STRING <--> DB: VARCHAR2
|
||||
101.1.5 oracledb.STRING <--> DB: FLOAT
|
||||
101.1.6 oracledb.STRING <--> DB: BINARY_FLOAT
|
||||
101.1.7 oracledb.STRING <--> DB: BINARY_DOUBLE
|
||||
101.1.8 oracledb.STRING <--> DB: DATE
|
||||
101.1.9 oracledb.STRING <--> DB: TIMESTAMP
|
||||
101.1.10 oracledb.STRING <--> DB: RAW
|
||||
101.1.11 oracledb.STRING <--> DB: CLOB
|
||||
101.1.12 oracledb.STRING <--> DB: BLOB
|
||||
101.1.13 oracledb.BUFFER <--> DB: NUMBER
|
||||
101.1.14 oracledb.BUFFER <--> DB: CHAR
|
||||
101.1.15 oracledb.BUFFER <--> DB: NCHAR
|
||||
101.1.16 oracledb.BUFFER <--> DB: VARCHAR2
|
||||
101.1.17 oracledb.BUFFER <--> DB: FLOAT
|
||||
101.1.18 oracledb.BUFFER <--> DB: BINARY_FLOAT
|
||||
101.1.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE
|
||||
101.1.20 oracledb.BUFFER <--> DB: DATE
|
||||
101.1.21 oracledb.BUFFER <--> DB: TIMESTAMP
|
||||
101.1.22 oracledb.BUFFER <--> DB: RAW
|
||||
101.1.23 oracledb.BUFFER <--> DB: CLOB
|
||||
101.1.24 oracledb.BUFFER <--> DB: BLOB
|
||||
101.2 PLSQL procedure bind out null value with default type and dir
|
||||
101.2.1 oracledb.STRING <--> DB: NUMBER
|
||||
101.2.2 oracledb.STRING <--> DB: CHAR
|
||||
101.2.3 oracledb.STRING <--> DB: NCHAR
|
||||
101.2.4 oracledb.STRING <--> DB: VARCHAR2
|
||||
101.2.5 oracledb.STRING <--> DB: FLOAT
|
||||
101.2.6 oracledb.STRING <--> DB: BINARY_FLOAT
|
||||
101.2.7 oracledb.STRING <--> DB: BINARY_DOUBLE
|
||||
101.2.8 oracledb.STRING <--> DB: DATE
|
||||
101.2.9 oracledb.STRING <--> DB: TIMESTAMP
|
||||
101.2.10 oracledb.STRING <--> DB: RAW
|
||||
101.2.11 oracledb.STRING <--> DB: CLOB
|
||||
101.2.12 oracledb.STRING <--> DB: BLOB
|
||||
101.2.13 oracledb.BUFFER <--> DB: NUMBER
|
||||
101.2.14 oracledb.BUFFER <--> DB: CHAR
|
||||
101.2.15 oracledb.BUFFER <--> DB: NCHAR
|
||||
101.2.16 oracledb.BUFFER <--> DB: VARCHAR2
|
||||
101.2.17 oracledb.BUFFER <--> DB: FLOAT
|
||||
101.2.18 oracledb.BUFFER <--> DB: BINARY_FLOAT
|
||||
101.2.19 oracledb.BUFFER <--> DB: BINARY_DOUBLE
|
||||
101.2.20 oracledb.BUFFER <--> DB: DATE
|
||||
101.2.21 oracledb.BUFFER <--> DB: TIMESTAMP
|
||||
101.2.22 oracledb.BUFFER <--> DB: RAW
|
||||
101.2.23 oracledb.BUFFER <--> DB: CLOB
|
||||
101.2.24 oracledb.BUFFER <--> DB: BLOB
|
||||
|
|
|
@ -93,3 +93,13 @@ test/fetchBlobAsBuffer2.js
|
|||
test/fetchBlobAsBuffer3.js
|
||||
test/fetchClobAsString4.js
|
||||
test/fetchBlobAsBuffer4.js
|
||||
test/binding_DMLInsert.js
|
||||
test/binding_procedureBindIn.js
|
||||
test/binding_procedureBindInout.js
|
||||
test/binding_functionBindInout.js
|
||||
test/binding_procedureBindOut.js
|
||||
test/binding_functionBindOut.js
|
||||
test/binding_DMLReturningInto.js
|
||||
test/binding_functionBindIn.js
|
||||
test/binding_defaultBindIn.js
|
||||
test/binding_defaultBindInout.js
|
|
@ -39,3 +39,10 @@ random.getRandomString = function (length, specialStr) {
|
|||
str = specialStr + str + specialStr;
|
||||
return str;
|
||||
};
|
||||
|
||||
random.getRandomLenString = function (length) {
|
||||
var str='';
|
||||
for( ; str.length < length; str += Math.random().toString(36).slice(2));
|
||||
str = str.substr(0, length);
|
||||
return str;
|
||||
};
|
||||
|
|
|
@ -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. */
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
|
@ -1399,5 +1399,66 @@ describe('12. resultSet1.js', function() {
|
|||
}
|
||||
});
|
||||
});
|
||||
describe('12.8 Testing errInvalidResultSet', function() {
|
||||
it('12.8.1 Negative: UPDATE BIND out with oracledb.CURSOR - bind by name', function(done) {
|
||||
var sql = "update nodb_rs1_emp set employees_name = 'abc' where employees_id = 1 RETURNING employees_name INTO :name";
|
||||
connection.execute(
|
||||
sql,
|
||||
{ name: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT } },
|
||||
{ resultSet: true},
|
||||
function(err) {
|
||||
// NJS-018: invalid ResultSet
|
||||
(err.message).should.startWith('NJS-018:');
|
||||
done();
|
||||
}
|
||||
)
|
||||
});
|
||||
|
||||
it('12.8.2 Negative: UPDATE BIND out with oracledb.CURSOR - bind by position', function(done) {
|
||||
var sql = "update nodb_rs1_emp set employees_name = 'abc' where employees_id = 1 RETURNING employees_name INTO :name";
|
||||
connection.execute(
|
||||
sql,
|
||||
[ { type: oracledb.CURSOR, dir: oracledb.BIND_OUT } ],
|
||||
{ resultSet: true},
|
||||
function(err) {
|
||||
// NJS-018: invalid ResultSet
|
||||
(err.message).should.startWith('NJS-018:');
|
||||
done();
|
||||
}
|
||||
)
|
||||
});
|
||||
|
||||
it('12.8.3 Negative: INSERT BIND out with oracledb.CURSOR - bind by name', function(done) {
|
||||
var sql = "insert into nodb_rs1_emp (:id, :name) RETURNING employees_name INTO :out";
|
||||
connection.execute(
|
||||
sql,
|
||||
{
|
||||
id: { val:1000, type: oracledb.CURSOR, dir: oracledb.BIND_OUT },
|
||||
name: { val:'hello', type: oracledb.STRING, dir: oracledb.BIND_IN },
|
||||
out: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT }
|
||||
},
|
||||
{ resultSet: true},
|
||||
function(err) {
|
||||
// NJS-018: invalid ResultSet
|
||||
(err.message).should.startWith('NJS-018:');
|
||||
done();
|
||||
}
|
||||
)
|
||||
});
|
||||
|
||||
it('12.8.4 Negative: INSERT BIND out with oracledb.CURSOR - bind by position', function(done) {
|
||||
var sql = "insert into nodb_rs1_emp (:id, :name) RETURNING employees_name INTO :out";
|
||||
connection.execute(
|
||||
sql,
|
||||
[ 1001, 'hello', { type: oracledb.CURSOR, dir: oracledb.BIND_OUT } ],
|
||||
{ resultSet: true},
|
||||
function(err) {
|
||||
// NJS-018: invalid ResultSet
|
||||
(err.message).should.startWith('NJS-018:');
|
||||
done();
|
||||
}
|
||||
)
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
|
|
@ -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