Skip to content

Commit c0bedab

Browse files
committed
Test case for multiple OUT binds for dbObject files
1 parent 7e062fc commit c0bedab

File tree

6 files changed

+311
-0
lines changed

6 files changed

+311
-0
lines changed

test/dbObject1.js

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,36 @@ describe('200. dbObject1.js', () => {
3535
const TYPE = 'NODB_TYP_OBJ_1';
3636
const TABLE = 'NODB_TAB_OBJ1';
3737

38+
let proc1 =
39+
`create or replace procedure nodb_getDataCursor1(p_cur out sys_refcursor) is
40+
begin
41+
open p_cur for
42+
SELECT
43+
* FROM
44+
${TABLE}
45+
WHERE num >= 108;
46+
end; `;
47+
48+
let proc2 =
49+
`create or replace procedure nodb_getDataCursor2(p_cur out sys_refcursor) is
50+
begin
51+
open p_cur for
52+
SELECT
53+
* FROM
54+
${TABLE}
55+
WHERE num >= 300;
56+
end; `;
57+
58+
let proc3 =
59+
`create or replace procedure nodb_getDataCursor3(
60+
p_cur1 out sys_refcursor,
61+
p_cur2 out sys_refcursor
62+
) is
63+
begin
64+
nodb_getDataCursor1(p_cur1);
65+
nodb_getDataCursor2(p_cur2);
66+
end;`;
67+
3868
before(async () => {
3969
try {
4070
conn = await oracledb.getConnection(dbconfig);
@@ -67,6 +97,10 @@ describe('200. dbObject1.js', () => {
6797
sql = `DROP TYPE ${TYPE}`;
6898
await conn.execute(sql);
6999

100+
await conn.execute(`DROP PROCEDURE nodb_getDataCursor3`);
101+
await conn.execute(`DROP PROCEDURE nodb_getDataCursor2`);
102+
await conn.execute(`DROP PROCEDURE nodb_getDataCursor1`);
103+
70104
await conn.close();
71105
} catch (err) {
72106
assert.fail(err);
@@ -350,4 +384,31 @@ describe('200. dbObject1.js', () => {
350384
}
351385
}); // 200.9
352386

387+
it('200.10 call procedure with 2 OUT binds of DbObject', async function() {
388+
try {
389+
await conn.execute(proc1);
390+
await conn.execute(proc2);
391+
await conn.execute(proc3);
392+
393+
let result = await conn.execute(
394+
`BEGIN nodb_getDataCursor3(p_cur1 => :p_cur1,
395+
p_cur2 => :p_cur2); end;`,
396+
{
397+
p_cur1: {type: oracledb.CURSOR, dir: oracledb.BIND_OUT},
398+
p_cur2: {type: oracledb.CURSOR, dir: oracledb.BIND_OUT}
399+
}
400+
);
401+
402+
let resultSet = await result.outBinds.p_cur1.getRows();
403+
assert.equal(resultSet.length, 6);
404+
result.outBinds.p_cur1.close();
405+
406+
resultSet = await result.outBinds.p_cur2.getRows();
407+
assert.equal(resultSet.length, 3);
408+
result.outBinds.p_cur2.close();
409+
} catch (e) {
410+
assert.fail(e);
411+
}
412+
}); // 200.10;
413+
353414
});

test/dbObject2.js

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,36 @@ describe('201. dbObject2.js', () => {
3535
const TYPE = 'NODB_TYP_OBJ_2';
3636
const TABLE = 'NODB_TAB_OBJ2';
3737

38+
let proc1 =
39+
`create or replace procedure nodb_getDataCursor1(p_cur out sys_refcursor) is
40+
begin
41+
open p_cur for
42+
SELECT
43+
* FROM
44+
${TABLE}
45+
WHERE num >= 100;
46+
end; `;
47+
48+
let proc2 =
49+
`create or replace procedure nodb_getDataCursor2(p_cur out sys_refcursor) is
50+
begin
51+
open p_cur for
52+
SELECT
53+
* FROM
54+
${TABLE}
55+
WHERE num >= 101;
56+
end; `;
57+
58+
let proc3 =
59+
`create or replace procedure nodb_getDataCursor3(
60+
p_cur1 out sys_refcursor,
61+
p_cur2 out sys_refcursor
62+
) is
63+
begin
64+
nodb_getDataCursor1(p_cur1);
65+
nodb_getDataCursor2(p_cur2);
66+
end;`;
67+
3868
before(async () => {
3969
try {
4070
conn = await oracledb.getConnection(dbconfig);
@@ -67,6 +97,10 @@ describe('201. dbObject2.js', () => {
6797
sql = `DROP TYPE ${TYPE}`;
6898
await conn.execute(sql);
6999

100+
await conn.execute(`DROP PROCEDURE nodb_getDataCursor3`);
101+
await conn.execute(`DROP PROCEDURE nodb_getDataCursor2`);
102+
await conn.execute(`DROP PROCEDURE nodb_getDataCursor1`);
103+
70104
await conn.close();
71105
} catch (err) {
72106
assert.fail(err);
@@ -208,4 +242,32 @@ describe('201. dbObject2.js', () => {
208242
assert.fail(err);
209243
}
210244
}); // 201.4
245+
246+
it('201.5 call procedure with 2 OUT binds of DbObject', async function() {
247+
try {
248+
await conn.execute(proc1);
249+
await conn.execute(proc2);
250+
await conn.execute(proc3);
251+
252+
let result = await conn.execute(
253+
`BEGIN nodb_getDataCursor3(p_cur1 => :p_cur1,
254+
p_cur2 => :p_cur2); end;`,
255+
{
256+
p_cur1: {type: oracledb.CURSOR, dir: oracledb.BIND_OUT},
257+
p_cur2: {type: oracledb.CURSOR, dir: oracledb.BIND_OUT}
258+
}
259+
);
260+
261+
let resultSet = await result.outBinds.p_cur1.getRows();
262+
assert.equal(resultSet.length, 3);
263+
result.outBinds.p_cur1.close();
264+
265+
resultSet = await result.outBinds.p_cur2.getRows();
266+
assert.equal(resultSet.length, 3);
267+
result.outBinds.p_cur2.close();
268+
} catch (e) {
269+
assert.fail(e);
270+
}
271+
}); // 201.5;
272+
211273
});

test/dbObject3.js

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,36 @@ describe('202. dbObject3.js', () => {
3535
const TYPE = 'NODB_TYP_OBJ_3';
3636
const TABLE = 'NODB_TAB_OBJ3';
3737

38+
let proc1 =
39+
`create or replace procedure nodb_getDataCursor1(p_cur out sys_refcursor) is
40+
begin
41+
open p_cur for
42+
SELECT
43+
* FROM
44+
${TABLE}
45+
WHERE num >= 100;
46+
end; `;
47+
48+
let proc2 =
49+
`create or replace procedure nodb_getDataCursor2(p_cur out sys_refcursor) is
50+
begin
51+
open p_cur for
52+
SELECT
53+
* FROM
54+
${TABLE}
55+
WHERE num >= 101;
56+
end; `;
57+
58+
let proc3 =
59+
`create or replace procedure nodb_getDataCursor3(
60+
p_cur1 out sys_refcursor,
61+
p_cur2 out sys_refcursor
62+
) is
63+
begin
64+
nodb_getDataCursor1(p_cur1);
65+
nodb_getDataCursor2(p_cur2);
66+
end;`;
67+
3868
before(async () => {
3969
try {
4070
conn = await oracledb.getConnection(dbconfig);
@@ -67,6 +97,10 @@ describe('202. dbObject3.js', () => {
6797
sql = `DROP TYPE ${TYPE}`;
6898
await conn.execute(sql);
6999

100+
await conn.execute(`DROP PROCEDURE nodb_getDataCursor3`);
101+
await conn.execute(`DROP PROCEDURE nodb_getDataCursor2`);
102+
await conn.execute(`DROP PROCEDURE nodb_getDataCursor1`);
103+
70104
await conn.close();
71105
} catch (err) {
72106
assert.fail(err);
@@ -177,4 +211,31 @@ describe('202. dbObject3.js', () => {
177211
assert.fail(err);
178212
}
179213
}); // 202.4
214+
215+
it('202.5 call procedure with 2 OUT binds of DbObject', async function() {
216+
try {
217+
await conn.execute(proc1);
218+
await conn.execute(proc2);
219+
await conn.execute(proc3);
220+
221+
let result = await conn.execute(
222+
`BEGIN nodb_getDataCursor3(p_cur1 => :p_cur1,
223+
p_cur2 => :p_cur2); end;`,
224+
{
225+
p_cur1: {type: oracledb.CURSOR, dir: oracledb.BIND_OUT},
226+
p_cur2: {type: oracledb.CURSOR, dir: oracledb.BIND_OUT}
227+
}
228+
);
229+
230+
let resultSet = await result.outBinds.p_cur1.getRows();
231+
assert.equal(resultSet.length, 3);
232+
result.outBinds.p_cur1.close();
233+
234+
resultSet = await result.outBinds.p_cur2.getRows();
235+
assert.equal(resultSet.length, 3);
236+
result.outBinds.p_cur2.close();
237+
} catch (e) {
238+
assert.fail(e);
239+
}
240+
}); // 200.5;
180241
});

test/dbObject4.js

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,35 @@ describe('203. dbObject4.js', () => {
3434
const TYPE = 'NODB_TYP_OBJ_4';
3535
const TABLE = 'NODB_TAB_OBJ4';
3636

37+
let proc1 =
38+
`create or replace procedure nodb_getDataCursor1(p_cur out sys_refcursor) is begin
39+
open p_cur for
40+
SELECT
41+
* FROM
42+
${TABLE}
43+
WHERE num >= 100;
44+
end; `;
45+
46+
let proc2 =
47+
`create or replace procedure nodb_getDataCursor2(p_cur out sys_refcursor) is
48+
begin
49+
open p_cur for
50+
SELECT
51+
* FROM
52+
${TABLE}
53+
WHERE num >= 101;
54+
end; `;
55+
56+
let proc3 =
57+
`create or replace procedure nodb_getDataCursor3(
58+
p_cur1 out sys_refcursor,
59+
p_cur2 out sys_refcursor
60+
) is
61+
begin
62+
nodb_getDataCursor1(p_cur1);
63+
nodb_getDataCursor2(p_cur2);
64+
end; `;
65+
3766
before(async () => {
3867
try {
3968
conn = await oracledb.getConnection(dbconfig);
@@ -66,6 +95,10 @@ describe('203. dbObject4.js', () => {
6695
sql = `DROP TYPE ${TYPE}`;
6796
await conn.execute(sql);
6897

98+
await conn.execute(`DROP PROCEDURE nodb_getDataCursor3`);
99+
await conn.execute(`DROP PROCEDURE nodb_getDataCursor2`);
100+
await conn.execute(`DROP PROCEDURE nodb_getDataCursor1`);
101+
69102
await conn.close();
70103
} catch (err) {
71104
assert.fail(err);
@@ -176,4 +209,32 @@ describe('203. dbObject4.js', () => {
176209
assert.fail(err);
177210
}
178211
}); // 203.4
212+
213+
it('203.5 call procedure with 2 OUT binds of DbObject', async function() {
214+
try {
215+
await conn.execute(proc1);
216+
await conn.execute(proc2);
217+
await conn.execute(proc3);
218+
219+
let result = await conn.execute(
220+
`BEGIN nodb_getDataCursor3(p_cur1 => :p_cur1,
221+
p_cur2 => :p_cur2); end;`,
222+
{
223+
p_cur1: {type: oracledb.CURSOR, dir: oracledb.BIND_OUT},
224+
p_cur2: {type: oracledb.CURSOR, dir: oracledb.BIND_OUT}
225+
}
226+
);
227+
228+
let resultSet = await result.outBinds.p_cur1.getRows();
229+
assert.equal(resultSet.length, 4);
230+
result.outBinds.p_cur1.close();
231+
232+
resultSet = await result.outBinds.p_cur2.getRows();
233+
assert.equal(resultSet.length, 4);
234+
result.outBinds.p_cur2.close();
235+
} catch (e) {
236+
assert.fail(e);
237+
}
238+
}); // 203.5;
239+
179240
});

0 commit comments

Comments
 (0)