@@ -131,17 +131,17 @@ void ODBCOracleTest::testBarebone()
131131 " Third NUMBER)" ;
132132
133133 *_pSession << " CREATE OR REPLACE "
134- " PROCEDURE multiResultsProcedure(tmp1 OUT SYS_REFCURSOR, "
135- " tmp2 OUT SYS_REFCURSOR,"
136- " tmp3 OUT SYS_REFCURSOR,"
137- " tmp4 OUT SYS_REFCURSOR,"
138- " tmp5 OUT SYS_REFCURSOR) IS "
134+ " PROCEDURE multiResultsProcedure(ret1 OUT SYS_REFCURSOR, "
135+ " ret2 OUT SYS_REFCURSOR,"
136+ " ret3 OUT SYS_REFCURSOR,"
137+ " ret4 OUT SYS_REFCURSOR,"
138+ " ret5 OUT SYS_REFCURSOR) IS "
139139 " BEGIN "
140- " OPEN tmp1 FOR SELECT * FROM Test WHERE First = '1';"
141- " OPEN tmp2 FOR SELECT * FROM Test WHERE First = '2';"
142- " OPEN tmp3 FOR SELECT * FROM Test WHERE First = '3';"
143- " OPEN tmp4 FOR SELECT * FROM Test WHERE First = '4';"
144- " OPEN tmp5 FOR SELECT * FROM Test WHERE First = '5';"
140+ " OPEN ret1 FOR SELECT * FROM Test WHERE First = '1';"
141+ " OPEN ret2 FOR SELECT * FROM Test WHERE First = '2';"
142+ " OPEN ret3 FOR SELECT * FROM Test WHERE First = '3';"
143+ " OPEN ret4 FOR SELECT * FROM Test WHERE First = '4';"
144+ " OPEN ret5 FOR SELECT * FROM Test WHERE First = '5';"
145145 " END multiResultsProcedure;" , now;
146146
147147 _pExecutor->bareboneODBCMultiResultTest (_dbConnString,
@@ -1109,7 +1109,7 @@ void ODBCOracleTest::testStoredProcedureDynamicAny()
11091109}
11101110
11111111
1112- void ODBCOracleTest::testStoredCursorProcedure ()
1112+ void ODBCOracleTest::testCursorStoredProcedure ()
11131113{
11141114 if (!_pSession) fail (" Test not available." );
11151115
@@ -1251,7 +1251,7 @@ void ODBCOracleTest::testStoredFunction()
12511251}
12521252
12531253
1254- void ODBCOracleTest::testStoredCursorFunction ()
1254+ void ODBCOracleTest::testCursorStoredFunction ()
12551255{
12561256 if (!_pSession) fail (" Test not available." );
12571257
@@ -1367,6 +1367,39 @@ void ODBCOracleTest::testDynamicAny()
13671367}
13681368
13691369
1370+ void ODBCOracleTest::testMultipleResults ()
1371+ {
1372+ if (!_pSession) fail (" Test not available." );
1373+
1374+
1375+ std::string sql = " CREATE OR REPLACE "
1376+ " PROCEDURE multiResultsProcedure(paramAge1 IN NUMBER,"
1377+ " paramAge2 IN NUMBER,"
1378+ " ret1 OUT SYS_REFCURSOR, "
1379+ " ret2 OUT SYS_REFCURSOR,"
1380+ " ret3 OUT SYS_REFCURSOR) IS "
1381+ " BEGIN "
1382+ " OPEN ret1 FOR SELECT * FROM Person WHERE Age = paramAge1;"
1383+ " OPEN ret2 FOR SELECT Age FROM Person WHERE FirstName = 'Bart';"
1384+ " OPEN ret3 FOR SELECT * FROM Person WHERE Age = paramAge2;"
1385+ " END multiResultsProcedure;" ;
1386+
1387+ for (int i = 0 ; i < 8 ;)
1388+ {
1389+ recreatePersonTable ();
1390+ *_pSession << sql, now;
1391+ _pSession->setFeature (" autoBind" , bindValues[i]);
1392+ _pSession->setFeature (" autoExtract" , bindValues[i+1 ]);
1393+ _pExecutor->multipleResults (" {call multiResultsProcedure(?, ?)}" );
1394+
1395+ i += 2 ;
1396+ }
1397+ }
1398+
1399+
1400+
1401+
1402+
13701403void ODBCOracleTest::dropObject (const std::string& type, const std::string& name)
13711404{
13721405 try
@@ -1593,14 +1626,16 @@ bool ODBCOracleTest::init(const std::string& driver, const std::string& dsn)
15931626
15941627 _pExecutor = new SQLExecutor (driver + " SQL Executor" , _pSession);
15951628
1629+ #ifdef POCO_OS_FAMILY_WINDOWS
15961630 // Workaround:
15971631 //
1598- // Barebone ODBC test is called initially for Oracle only .
1632+ // Barebone ODBC test is called automatically on startup for Oracle.
15991633 // The test framework does not exit cleanly if
16001634 // Oracle tests are enabled (i.e. Oracle driver is found)
16011635 // but no tests are executed.
16021636 // The exact reason for this behavior is unknown at this time.
16031637 testBarebone ();
1638+ #endif
16041639
16051640 return true ;
16061641}
@@ -1661,18 +1696,19 @@ CppUnit::Test* ODBCOracleTest::suite()
16611696 CppUnit_addTest (pSuite, ODBCOracleTest, testTuple);
16621697 CppUnit_addTest (pSuite, ODBCOracleTest, testTupleVector);
16631698 CppUnit_addTest (pSuite, ODBCOracleTest, testStoredProcedure);
1664- CppUnit_addTest (pSuite, ODBCOracleTest, testStoredCursorProcedure );
1699+ CppUnit_addTest (pSuite, ODBCOracleTest, testCursorStoredProcedure );
16651700 CppUnit_addTest (pSuite, ODBCOracleTest, testStoredProcedureAny);
16661701 CppUnit_addTest (pSuite, ODBCOracleTest, testStoredProcedureDynamicAny);
16671702 CppUnit_addTest (pSuite, ODBCOracleTest, testStoredFunction);
1668- CppUnit_addTest (pSuite, ODBCOracleTest, testStoredCursorFunction );
1703+ CppUnit_addTest (pSuite, ODBCOracleTest, testCursorStoredFunction );
16691704 CppUnit_addTest (pSuite, ODBCOracleTest, testInternalExtraction);
16701705 CppUnit_addTest (pSuite, ODBCOracleTest, testInternalStorageType);
16711706 CppUnit_addTest (pSuite, ODBCOracleTest, testNull);
16721707 CppUnit_addTest (pSuite, ODBCOracleTest, testRowIterator);
16731708 CppUnit_addTest (pSuite, ODBCOracleTest, testAsync);
16741709 CppUnit_addTest (pSuite, ODBCOracleTest, testAny);
16751710 CppUnit_addTest (pSuite, ODBCOracleTest, testDynamicAny);
1711+ CppUnit_addTest (pSuite, ODBCOracleTest, testMultipleResults);
16761712
16771713 return pSuite;
16781714 }
0 commit comments