@@ -247,72 +247,82 @@ describe('3. examples.js', function(){
247247 } )
248248
249249 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
269325
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 ) ;
316326 } )
317327
318328 } )
0 commit comments