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 */
|
#define NJS_ITER_SIZE 65535 /* Use (64KB - 1) with 11g Clients */
|
||||||
#endif
|
#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
|
// number of rows prefetched by non-ResultSet queries
|
||||||
#define NJS_PREFETCH_NON_RESULTSET 2
|
#define NJS_PREFETCH_NON_RESULTSET 2
|
||||||
|
|
||||||
|
@ -1088,6 +1085,7 @@ void Connection::GetInBindParamsScalar(Local<Value> v8val, Bind* bind,
|
||||||
{
|
{
|
||||||
case NJS_VALUETYPE_NULL:
|
case NJS_VALUETYPE_NULL:
|
||||||
bind->value = NULL;
|
bind->value = NULL;
|
||||||
|
*(bind->len) = 0; /* NULL value provided, no buffer used */
|
||||||
bind->type = dpi::DpiVarChar;
|
bind->type = dpi::DpiVarChar;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -2403,41 +2401,17 @@ void Connection::Descr2StringOrBuffer ( eBaton* executeBaton )
|
||||||
* index - Index of the Bind vector
|
* index - Index of the Bind vector
|
||||||
*
|
*
|
||||||
* NOTE:
|
* NOTE:
|
||||||
* Bind enhancements for CLOB/BLOB As String/Buffer not supported for INOUT
|
* Bind type is expected only STRING and RAW
|
||||||
* arguments
|
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void Connection::ConvertStringOrBuffer2LOB ( eBaton* executeBaton,
|
void Connection::ConvertStringOrBuffer2LOB ( eBaton* executeBaton,
|
||||||
unsigned int index )
|
unsigned int index )
|
||||||
{
|
{
|
||||||
Bind *bind = executeBaton->binds[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;
|
extBind->fields.extLob.maxSize = bind->maxSize;
|
||||||
|
|
||||||
// Convert the input data into Temp LOB for IN and INOUT binds
|
// 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
|
// Change the bind->type to LOB to handle more than 32k data
|
||||||
bind->type = ( bind->type == DpiVarChar ) ? DpiClob : DpiBlob;
|
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)
|
void Connection::PrepareAndBind (eBaton* executeBaton)
|
||||||
{
|
{
|
||||||
executeBaton->dpistmt = executeBaton->dpiconn->getStmt(executeBaton->sql);
|
executeBaton->dpistmt = executeBaton->dpiconn->
|
||||||
executeBaton->st = executeBaton->dpistmt->stmtType ();
|
getStmt(executeBaton->sql);
|
||||||
|
executeBaton->st = executeBaton->dpistmt->stmtType ();
|
||||||
executeBaton->stmtIsReturning = executeBaton->dpistmt->isReturning ();
|
executeBaton->stmtIsReturning = executeBaton->dpistmt->isReturning ();
|
||||||
ExtBind *extBind = NULL ;
|
ExtBind *extBind = NULL ;
|
||||||
|
|
||||||
if(!executeBaton->binds.empty())
|
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();
|
if ( executeBaton->binds[index]->isOut &&
|
||||||
index++)
|
executeBaton->stmtIsReturning &&
|
||||||
|
executeBaton->binds[index]->type == dpi::DpiRSet )
|
||||||
{
|
{
|
||||||
if ( executeBaton->binds[index]->isOut &&
|
executeBaton->error = NJSMessages::getErrorMsg (
|
||||||
executeBaton->stmtIsReturning &&
|
errInvalidResultSet ) ;
|
||||||
executeBaton->binds[index]->type == dpi::DpiRSet )
|
goto exitPrepareAndBind;
|
||||||
{
|
}
|
||||||
executeBaton->error = NJSMessages::getErrorMsg (
|
|
||||||
errInvalidResultSet ) ;
|
|
||||||
goto exitPrepareAndBind;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Process bind enhancements CLOB/BLOB As String/Buffer for PL/SQL
|
// Process bind enhancements CLOB/BLOB As String/Buffer for PL/SQL
|
||||||
if ( ( executeBaton->st == DpiStmtBegin ||
|
/* Interested only in PL/SQL procedure calls */
|
||||||
executeBaton->st == DpiStmtDeclare ||
|
if ( ( executeBaton->st == DpiStmtBegin ||
|
||||||
executeBaton->st == DpiStmtCall ) &&
|
executeBaton->st == DpiStmtDeclare ||
|
||||||
( executeBaton->binds[index]->type == DpiVarChar ||
|
executeBaton->st == DpiStmtCall ))
|
||||||
executeBaton->binds[index]->type == DpiRaw ) )
|
{
|
||||||
|
/* 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() )
|
if ( !executeBaton->error.empty() )
|
||||||
{
|
{
|
||||||
goto exitPrepareAndBind;
|
goto exitPrepareAndBind;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// process LOB object for IN and INOUT bind
|
// Convert v8::Date to Oracle DB Type for IN and IN/OUT binds
|
||||||
if ( ( executeBaton->binds[index]->isInOut ||
|
if ( executeBaton->binds[index]->type == DpiTimestampLTZ &&
|
||||||
!executeBaton->binds[index]->isOut ) &&
|
( executeBaton->binds[index]->isInOut || // INOUT binds
|
||||||
( *(executeBaton->binds[index]->ind) != -1 ) &&
|
!executeBaton->binds[index]->isOut ) ) // NOT OUT && NOT INOUT
|
||||||
( executeBaton->binds[index]->type == DpiClob ||
|
{
|
||||||
executeBaton->binds[index]->type == DpiBlob ) )
|
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 );
|
executeBaton->error = NJSMessages::getErrorMsg (
|
||||||
}
|
|
||||||
|
|
||||||
// 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 (
|
|
||||||
errInsufficientMemory );
|
errInsufficientMemory );
|
||||||
goto exitPrepareAndBind;
|
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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
|
// Bind by name
|
||||||
executeBaton->dpistmt->bind(
|
executeBaton->dpistmt->bind(
|
||||||
(const unsigned char*)executeBaton->binds[index]->key.c_str(),
|
(const unsigned char*)executeBaton->binds[index]->key.c_str(),
|
||||||
|
@ -2630,83 +2614,8 @@ void Connection::PrepareAndBind (eBaton* executeBaton)
|
||||||
executeBaton->binds[index]->isOut) ?
|
executeBaton->binds[index]->isOut) ?
|
||||||
extBind->fields.extDMLReturnCbCtx.ctx : NULL);
|
extBind->fields.extDMLReturnCbCtx.ctx : NULL);
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
else
|
|
||||||
{
|
|
||||||
for(unsigned int index = 0 ;index < executeBaton->binds.size();
|
|
||||||
index++)
|
|
||||||
{
|
{
|
||||||
// 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
|
// Bind by position
|
||||||
executeBaton->dpistmt->bind(
|
executeBaton->dpistmt->bind(
|
||||||
index+1,executeBaton->binds[index]->type,
|
index+1,executeBaton->binds[index]->type,
|
||||||
|
|
|
@ -66,6 +66,9 @@ using namespace dpi;
|
||||||
class Connection;
|
class Connection;
|
||||||
class ProtoILob;
|
class ProtoILob;
|
||||||
|
|
||||||
|
// Max number of bytes allowed for PLSQL STRING/BUFFER arguments
|
||||||
|
#define NJS_THRESHOLD_SIZE_PLSQL_STRING_ARG 32767
|
||||||
|
|
||||||
// Extended bind type
|
// Extended bind type
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
|
@ -760,6 +763,9 @@ private:
|
||||||
ProtoILob *protoILob,
|
ProtoILob *protoILob,
|
||||||
bool isAutoCloseLob = true );
|
bool isAutoCloseLob = true );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Inline function to identify v8 type from given v8::value
|
||||||
|
*/
|
||||||
static inline ValueType GetValueType ( v8::Local<v8::Value> v )
|
static inline ValueType GetValueType ( v8::Local<v8::Value> v )
|
||||||
{
|
{
|
||||||
ValueType type = NJS_VALUETYPE_INVALID;
|
ValueType type = NJS_VALUETYPE_INVALID;
|
||||||
|
@ -796,6 +802,46 @@ private:
|
||||||
return type;
|
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_;
|
dpi::Conn* dpiconn_;
|
||||||
bool isValid_;
|
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();
|
done();
|
||||||
}); // afterEach
|
}); // 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" +
|
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" +
|
"IS \n" +
|
||||||
" tmpLOB4 BLOB; \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" +
|
" select blob into tmpLOB4 from nodb_blob_1 where num_1 = ID_1;\n" +
|
||||||
" RETURN tmpLOB4; \n" +
|
" RETURN tmpLOB4; \n" +
|
||||||
"END;";
|
"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 proc_drop = "DROP FUNCTION nodb_blobs_out_94";
|
||||||
|
|
||||||
var len = 400;
|
var len = 400;
|
||||||
|
@ -178,11 +178,11 @@ describe('91. fetchBlobAsBuffer4.js', function() {
|
||||||
function(cb) {
|
function(cb) {
|
||||||
connection.execute(
|
connection.execute(
|
||||||
sqlRun,
|
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) {
|
function(err, result) {
|
||||||
should.not.exist(err);
|
should.not.exist(err);
|
||||||
var resultVal = result.outBinds.output;
|
var resultVal = result.outBinds[0];
|
||||||
var compareBuffer = assist.compare2Buffers(resultVal, content);
|
var compareBuffer = assist.compare2Buffers(content, resultVal);
|
||||||
should.strictEqual(compareBuffer, true);
|
should.strictEqual(compareBuffer, true);
|
||||||
cb();
|
cb();
|
||||||
}
|
}
|
||||||
|
@ -249,7 +249,7 @@ describe('91. fetchBlobAsBuffer4.js', function() {
|
||||||
], done);
|
], done);
|
||||||
}); // 91.1.2
|
}); // 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" +
|
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" +
|
"IS \n" +
|
||||||
" tmpLOB4 BLOB; \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" +
|
" select blob into tmpLOB4 from nodb_blob_1 where num_1 = ID_1;\n" +
|
||||||
" RETURN tmpLOB4; \n" +
|
" RETURN tmpLOB4; \n" +
|
||||||
"END;";
|
"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 proc_drop = "DROP FUNCTION nodb_blobs_out_94";
|
||||||
|
|
||||||
var len = 400;
|
var len = 400;
|
||||||
|
@ -283,10 +283,10 @@ describe('91. fetchBlobAsBuffer4.js', function() {
|
||||||
function(cb) {
|
function(cb) {
|
||||||
connection.execute(
|
connection.execute(
|
||||||
sqlRun,
|
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) {
|
function(err, result) {
|
||||||
should.not.exist(err);
|
should.not.exist(err);
|
||||||
var resultVal = result.outBinds.output;
|
var resultVal = result.outBinds[0];
|
||||||
var compareBuffer = assist.compare2Buffers(resultVal, content);
|
var compareBuffer = assist.compare2Buffers(resultVal, content);
|
||||||
should.strictEqual(compareBuffer, true);
|
should.strictEqual(compareBuffer, true);
|
||||||
cb();
|
cb();
|
||||||
|
@ -375,7 +375,7 @@ describe('91. fetchBlobAsBuffer4.js', function() {
|
||||||
done();
|
done();
|
||||||
}); // afterEach
|
}); // 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 len = 500;
|
||||||
var sequence = insertID++;
|
var sequence = insertID++;
|
||||||
var specialStr = "91.2.1";
|
var specialStr = "91.2.1";
|
||||||
|
@ -399,10 +399,10 @@ describe('91. fetchBlobAsBuffer4.js', function() {
|
||||||
function(cb) {
|
function(cb) {
|
||||||
connection.execute(
|
connection.execute(
|
||||||
sqlRun,
|
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) {
|
function(err, result) {
|
||||||
should.not.exist(err);
|
should.not.exist(err);
|
||||||
var resultVal = result.outBinds.c2;
|
var resultVal = result.outBinds[0];
|
||||||
var compareBuffer = assist.compare2Buffers(resultVal, content);
|
var compareBuffer = assist.compare2Buffers(resultVal, content);
|
||||||
should.strictEqual(compareBuffer, true);
|
should.strictEqual(compareBuffer, true);
|
||||||
cb();
|
cb();
|
||||||
|
@ -460,7 +460,7 @@ describe('91. fetchBlobAsBuffer4.js', function() {
|
||||||
], done);
|
], done);
|
||||||
}); // 91.2.2
|
}); // 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 len = 500;
|
||||||
var sequence = insertID++;
|
var sequence = insertID++;
|
||||||
var specialStr = "91.2.3";
|
var specialStr = "91.2.3";
|
||||||
|
@ -484,10 +484,10 @@ describe('91. fetchBlobAsBuffer4.js', function() {
|
||||||
function(cb) {
|
function(cb) {
|
||||||
connection.execute(
|
connection.execute(
|
||||||
sqlRun,
|
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) {
|
function(err, result) {
|
||||||
should.not.exist(err);
|
should.not.exist(err);
|
||||||
var resultVal = result.outBinds.c2;
|
var resultVal = result.outBinds[0];
|
||||||
var compareBuffer = assist.compare2Buffers(resultVal, content);
|
var compareBuffer = assist.compare2Buffers(resultVal, content);
|
||||||
should.strictEqual(compareBuffer, true);
|
should.strictEqual(compareBuffer, true);
|
||||||
cb();
|
cb();
|
||||||
|
@ -615,7 +615,7 @@ describe('91. fetchBlobAsBuffer4.js', function() {
|
||||||
], done);
|
], done);
|
||||||
}); // 91.3.1
|
}); // 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 len = 1000;
|
||||||
var sequence = insertID++;
|
var sequence = insertID++;
|
||||||
var specialStr = "91.3.2";
|
var specialStr = "91.3.2";
|
||||||
|
@ -637,11 +637,11 @@ describe('91. fetchBlobAsBuffer4.js', function() {
|
||||||
connection.execute(
|
connection.execute(
|
||||||
sqlRun,
|
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) {
|
function(err, result) {
|
||||||
should.not.exist(err);
|
should.not.exist(err);
|
||||||
var resultVal = result.outBinds.output;
|
var resultVal = result.outBinds[0];
|
||||||
var compareBuffer = assist.compare2Buffers(resultVal, content);
|
var compareBuffer = assist.compare2Buffers(resultVal, content);
|
||||||
should.strictEqual(compareBuffer, true);
|
should.strictEqual(compareBuffer, true);
|
||||||
cb();
|
cb();
|
||||||
|
@ -690,7 +690,7 @@ describe('91. fetchBlobAsBuffer4.js', function() {
|
||||||
], done);
|
], done);
|
||||||
}); // 91.3.3
|
}); // 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 len = 1000;
|
||||||
var sequence = insertID++;
|
var sequence = insertID++;
|
||||||
var specialStr = "91.3.4";
|
var specialStr = "91.3.4";
|
||||||
|
@ -712,11 +712,11 @@ describe('91. fetchBlobAsBuffer4.js', function() {
|
||||||
connection.execute(
|
connection.execute(
|
||||||
sqlRun,
|
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) {
|
function(err, result) {
|
||||||
should.not.exist(err);
|
should.not.exist(err);
|
||||||
var resultVal = result.outBinds.output;
|
var resultVal = result.outBinds[0];
|
||||||
var compareBuffer = assist.compare2Buffers(resultVal, content);
|
var compareBuffer = assist.compare2Buffers(resultVal, content);
|
||||||
should.strictEqual(compareBuffer, true);
|
should.strictEqual(compareBuffer, true);
|
||||||
cb();
|
cb();
|
||||||
|
|
|
@ -165,7 +165,7 @@ describe('90. fetchClobAsString4.js', function() {
|
||||||
done();
|
done();
|
||||||
}); // afterEach
|
}); // 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 len = 400;
|
||||||
var sequence = insertID++;
|
var sequence = insertID++;
|
||||||
var specialStr = "90.1.1";
|
var specialStr = "90.1.1";
|
||||||
|
@ -185,10 +185,10 @@ describe('90. fetchClobAsString4.js', function() {
|
||||||
function(cb) {
|
function(cb) {
|
||||||
connection.execute(
|
connection.execute(
|
||||||
sqlRun,
|
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) {
|
function(err, result) {
|
||||||
should.not.exist(err);
|
should.not.exist(err);
|
||||||
var resultVal = result.outBinds.output;
|
var resultVal = result.outBinds[0];
|
||||||
verifyResult(resultVal, specialStr, clobStr);
|
verifyResult(resultVal, specialStr, clobStr);
|
||||||
cb();
|
cb();
|
||||||
}
|
}
|
||||||
|
@ -234,7 +234,7 @@ describe('90. fetchClobAsString4.js', function() {
|
||||||
], done);
|
], done);
|
||||||
}); // 90.1.2
|
}); // 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 len = 400;
|
||||||
var sequence = insertID++;
|
var sequence = insertID++;
|
||||||
var specialStr = "90.1.2";
|
var specialStr = "90.1.2";
|
||||||
|
@ -254,10 +254,10 @@ describe('90. fetchClobAsString4.js', function() {
|
||||||
function(cb) {
|
function(cb) {
|
||||||
connection.execute(
|
connection.execute(
|
||||||
sqlRun,
|
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) {
|
function(err, result) {
|
||||||
should.not.exist(err);
|
should.not.exist(err);
|
||||||
var resultVal = result.outBinds.output;
|
var resultVal = result.outBinds[0];
|
||||||
verifyResult(resultVal, specialStr, clobStr);
|
verifyResult(resultVal, specialStr, clobStr);
|
||||||
cb();
|
cb();
|
||||||
}
|
}
|
||||||
|
@ -332,7 +332,7 @@ describe('90. fetchClobAsString4.js', function() {
|
||||||
done();
|
done();
|
||||||
}); // afterEach
|
}); // 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 len = 500;
|
||||||
var sequence = insertID++;
|
var sequence = insertID++;
|
||||||
var specialStr = "90.2.1";
|
var specialStr = "90.2.1";
|
||||||
|
@ -352,10 +352,10 @@ describe('90. fetchClobAsString4.js', function() {
|
||||||
function(cb) {
|
function(cb) {
|
||||||
connection.execute(
|
connection.execute(
|
||||||
sqlRun,
|
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) {
|
function(err, result) {
|
||||||
should.not.exist(err);
|
should.not.exist(err);
|
||||||
var resultVal = result.outBinds.c2;
|
var resultVal = result.outBinds[0];
|
||||||
verifyResult(resultVal, specialStr, clobStr);
|
verifyResult(resultVal, specialStr, clobStr);
|
||||||
cb();
|
cb();
|
||||||
}
|
}
|
||||||
|
@ -401,7 +401,7 @@ describe('90. fetchClobAsString4.js', function() {
|
||||||
], done);
|
], done);
|
||||||
}); // 90.2.2
|
}); // 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 len = 500;
|
||||||
var sequence = insertID++;
|
var sequence = insertID++;
|
||||||
var specialStr = "90.2.3";
|
var specialStr = "90.2.3";
|
||||||
|
@ -421,10 +421,10 @@ describe('90. fetchClobAsString4.js', function() {
|
||||||
function(cb) {
|
function(cb) {
|
||||||
connection.execute(
|
connection.execute(
|
||||||
sqlRun,
|
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) {
|
function(err, result) {
|
||||||
should.not.exist(err);
|
should.not.exist(err);
|
||||||
var resultVal = result.outBinds.c2;
|
var resultVal = result.outBinds[0];
|
||||||
verifyResult(resultVal, specialStr, clobStr);
|
verifyResult(resultVal, specialStr, clobStr);
|
||||||
cb();
|
cb();
|
||||||
}
|
}
|
||||||
|
@ -538,7 +538,7 @@ describe('90. fetchClobAsString4.js', function() {
|
||||||
], done);
|
], done);
|
||||||
}); // 90.3.1
|
}); // 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 len = 1000;
|
||||||
var sequence = insertID++;
|
var sequence = insertID++;
|
||||||
var specialStr = "90.3.1";
|
var specialStr = "90.3.1";
|
||||||
|
@ -558,10 +558,10 @@ describe('90. fetchClobAsString4.js', function() {
|
||||||
function(cb) {
|
function(cb) {
|
||||||
connection.execute(
|
connection.execute(
|
||||||
sqlRun,
|
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) {
|
function(err, result) {
|
||||||
should.not.exist(err);
|
should.not.exist(err);
|
||||||
var resultVal = result.outBinds.output;
|
var resultVal = result.outBinds[0];
|
||||||
verifyResult(resultVal, specialStr, clobStr);
|
verifyResult(resultVal, specialStr, clobStr);
|
||||||
cb();
|
cb();
|
||||||
}
|
}
|
||||||
|
@ -607,7 +607,7 @@ describe('90. fetchClobAsString4.js', function() {
|
||||||
], done);
|
], done);
|
||||||
}); // 90.3.3
|
}); // 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 len = 1000;
|
||||||
var sequence = insertID++;
|
var sequence = insertID++;
|
||||||
var specialStr = "90.3.4";
|
var specialStr = "90.3.4";
|
||||||
|
@ -627,10 +627,10 @@ describe('90. fetchClobAsString4.js', function() {
|
||||||
function(cb) {
|
function(cb) {
|
||||||
connection.execute(
|
connection.execute(
|
||||||
sqlRun,
|
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) {
|
function(err, result) {
|
||||||
should.not.exist(err);
|
should.not.exist(err);
|
||||||
var resultVal = result.outBinds.output;
|
var resultVal = result.outBinds[0];
|
||||||
verifyResult(resultVal, specialStr, clobStr);
|
verifyResult(resultVal, specialStr, clobStr);
|
||||||
cb();
|
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 Testing maxRows
|
||||||
12.7.1 maxRows option is ignored when resultSet option is true
|
12.7.1 maxRows option is ignored when resultSet option is true
|
||||||
12.7.2 maxRows option is ignored with REF Cursor
|
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. stream1.js
|
||||||
13.1 Testing QueryStream
|
13.1 Testing QueryStream
|
||||||
|
@ -1927,34 +1932,579 @@ Overview of node-oracledb functional tests
|
||||||
|
|
||||||
90. fetchClobAsString4.js
|
90. fetchClobAsString4.js
|
||||||
90.1 PLSQL FUNCTION RETURN CLOB to STRING
|
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.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.1.4 bind by name - 2
|
||||||
90.2 PLSQL PROCEDURE BIND OUT CLOB to STRING
|
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.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.2.4 bind by name - 2
|
||||||
90.3 PLSQL FUNCTION RETURN CLOB to VARCHAR2
|
90.3 PLSQL FUNCTION RETURN CLOB to VARCHAR2
|
||||||
90.3.1 bind by name - 1
|
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.3 bind by name - 2
|
||||||
- 90.3.4 bind by position - 2
|
90.3.4 bind by position - 2
|
||||||
|
|
||||||
91. fetchBlobAsBuffer4.js
|
91. fetchBlobAsBuffer4.js
|
||||||
91.1 PLSQL FUNCTION RETURN BLOB to BUFFER
|
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.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.1.4 bind by name - 2
|
||||||
91.2 PLSQL PROCEDURE BIND OUT BLOB to BUFFER
|
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.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.2.4 bind by name - 2
|
||||||
91.3 PLSQL FUNCTION RETURN BLOB to RAW
|
91.3 PLSQL FUNCTION RETURN BLOB to RAW
|
||||||
91.3.1 bind by name - 1
|
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.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/fetchBlobAsBuffer3.js
|
||||||
test/fetchClobAsString4.js
|
test/fetchClobAsString4.js
|
||||||
test/fetchBlobAsBuffer4.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;
|
str = specialStr + str + specialStr;
|
||||||
return str;
|
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