@@ -247,72 +247,82 @@ describe('3. examples.js', function(){
247
247
} )
248
248
249
249
it ( '3.4.1 executes a query from a JSON table' , function ( done ) {
250
- var data = { "userId" : 1 , "userName" : "Chris" } ;
251
- var s = JSON . stringify ( data ) ;
252
- var script =
253
- "BEGIN " +
254
- " DECLARE " +
255
- " e_table_exists EXCEPTION; " +
256
- " PRAGMA EXCEPTION_INIT(e_table_exists, -00942); " +
257
- " BEGIN " +
258
- " EXECUTE IMMEDIATE ('DROP TABLE j_purchaseorder'); " +
259
- " EXCEPTION " +
260
- " WHEN e_table_exists " +
261
- " THEN NULL; " +
262
- " END; " +
263
- " EXECUTE IMMEDIATE (' " +
264
- " CREATE TABLE j_purchaseorder ( " +
265
- " po_document VARCHAR2(4000) CONSTRAINT ensure_json CHECK (po_document IS JSON) " +
266
- " )" +
267
- " '); " +
268
- "END; " ;
250
+ if ( connection . oracleServerVersion < 1201000200 )
251
+ {
252
+ // This example only works with Oracle Database 12.1.0.2 or greater
253
+ done ( ) ;
254
+ }
255
+ else
256
+ {
257
+ var data = { "userId" : 1 , "userName" : "Chris" } ;
258
+ var s = JSON . stringify ( data ) ;
259
+ var script =
260
+ "BEGIN " +
261
+ " DECLARE " +
262
+ " e_table_exists EXCEPTION; " +
263
+ " PRAGMA EXCEPTION_INIT(e_table_exists, -00942); " +
264
+ " BEGIN " +
265
+ " EXECUTE IMMEDIATE ('DROP TABLE j_purchaseorder'); " +
266
+ " EXCEPTION " +
267
+ " WHEN e_table_exists " +
268
+ " THEN NULL; " +
269
+ " END; " +
270
+ " EXECUTE IMMEDIATE (' " +
271
+ " CREATE TABLE j_purchaseorder ( " +
272
+ " po_document VARCHAR2(4000) CONSTRAINT ensure_json CHECK (po_document IS JSON) " +
273
+ " )" +
274
+ " '); " +
275
+ "END; " ;
276
+
277
+ connection . should . be . ok ;
278
+ async . series ( [
279
+ function ( callback ) {
280
+ connection . execute (
281
+ script ,
282
+ function ( err ) {
283
+ should . not . exist ( err ) ;
284
+ callback ( ) ;
285
+ }
286
+ ) ;
287
+ } ,
288
+ function ( callback ) {
289
+ connection . execute (
290
+ "INSERT INTO j_purchaseorder (po_document) VALUES (:bv)" ,
291
+ [ s ] ,
292
+ function ( err , result ) {
293
+ should . not . exist ( err ) ;
294
+ ( result . rowsAffected ) . should . be . exactly ( 1 ) ;
295
+ callback ( ) ;
296
+ }
297
+ ) ;
298
+ } ,
299
+ function ( callback ) {
300
+ connection . execute (
301
+ "SELECT po_document FROM j_purchaseorder" ,
302
+ function ( err , result ) {
303
+ should . not . exist ( err ) ;
304
+
305
+ var js = JSON . parse ( result . rows [ 0 ] [ 0 ] ) ;
306
+ // console.log(js);
307
+ js . should . eql ( data ) ;
308
+
309
+ callback ( ) ;
310
+ }
311
+ ) ;
312
+ } ,
313
+ function ( callback ) {
314
+ connection . execute (
315
+ "DROP TABLE j_purchaseorder" ,
316
+ function ( err ) {
317
+ should . not . exist ( err ) ;
318
+ callback ( ) ;
319
+ }
320
+ ) ;
321
+ }
322
+ ] , done ) ;
323
+
324
+ } // else
269
325
270
- connection . should . be . ok ;
271
- async . series ( [
272
- function ( callback ) {
273
- connection . execute (
274
- script ,
275
- function ( err ) {
276
- should . not . exist ( err ) ;
277
- callback ( ) ;
278
- }
279
- ) ;
280
- } ,
281
- function ( callback ) {
282
- connection . execute (
283
- "INSERT INTO j_purchaseorder (po_document) VALUES (:bv)" ,
284
- [ s ] ,
285
- function ( err , result ) {
286
- should . not . exist ( err ) ;
287
- ( result . rowsAffected ) . should . be . exactly ( 1 ) ;
288
- callback ( ) ;
289
- }
290
- ) ;
291
- } ,
292
- function ( callback ) {
293
- connection . execute (
294
- "SELECT po_document FROM j_purchaseorder" ,
295
- function ( err , result ) {
296
- should . not . exist ( err ) ;
297
-
298
- var js = JSON . parse ( result . rows [ 0 ] [ 0 ] ) ;
299
- // console.log(js);
300
- js . should . eql ( data ) ;
301
-
302
- callback ( ) ;
303
- }
304
- ) ;
305
- } ,
306
- function ( callback ) {
307
- connection . execute (
308
- "DROP TABLE j_purchaseorder" ,
309
- function ( err ) {
310
- should . not . exist ( err ) ;
311
- callback ( ) ;
312
- }
313
- ) ;
314
- }
315
- ] , done ) ;
316
326
} )
317
327
318
328
} )
0 commit comments