1--TEST-- 2Oracle Database 12c Implicit Result Sets: oci_get_implicit_resultset: basic test 3 3--EXTENSIONS-- 4oci8 5--SKIPIF-- 6<?php 7$target_dbs = array('oracledb' => true, 'timesten' => false); // test runs on these DBs 8require(__DIR__.'/skipif.inc'); 9preg_match('/.*Release ([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)*/', oci_server_version($c), $matches); 10if (!(isset($matches[0]) && $matches[1] >= 12)) { 11 die("skip expected output only valid when using Oracle Database 12c or greater"); 12} 13preg_match('/^[[:digit:]]+/', oci_client_version(), $matches); 14if (!(isset($matches[0]) && $matches[0] >= 12)) { 15 die("skip works only with Oracle 12c or greater version of Oracle client libraries"); 16} 17?> 18--INI-- 19oci8.statement_cache_size = 0 20--FILE-- 21<?php 22 23require(__DIR__.'/connect.inc'); 24 25// Initialization 26 27$stmtarray = array( 28 "drop table imp_res_get_3_tab_1", 29 "create table imp_res_get_3_tab_1 (c1 number, c2 varchar2(10))", 30 "insert into imp_res_get_3_tab_1 values (1, 'abcde')", 31 "insert into imp_res_get_3_tab_1 values (2, 'fghij')", 32 "insert into imp_res_get_3_tab_1 values (3, 'klmno')", 33 34 "drop table imp_res_get_3_tab_2", 35 "create table imp_res_get_3_tab_2 (c3 varchar2(1))", 36 "insert into imp_res_get_3_tab_2 values ('t')", 37 "insert into imp_res_get_3_tab_2 values ('u')", 38 "insert into imp_res_get_3_tab_2 values ('v')", 39 40 "create or replace procedure imp_res_get_3_proc as 41 c1 sys_refcursor; 42 i pls_integer; 43 begin 44 for i in 1..30 loop -- if this value is too big for Oracle's open_cursors, calling imp_res_get_3_proc() can fail with ORA-1000 45 open c1 for select * from imp_res_get_3_tab_1 order by 1; 46 dbms_sql.return_result(c1); 47 open c1 for select * from imp_res_get_3_tab_2 where rownum < 3 order by 1; 48 dbms_sql.return_result(c1); 49 open c1 for select * from dual; 50 dbms_sql.return_result (c1); 51 end loop; 52 end;" 53); 54 55oci8_test_sql_execute($c, $stmtarray); 56 57// Run Test 58 59echo "Test 1\n"; 60 61$s = oci_parse($c, "begin imp_res_get_3_proc(); end;"); 62oci_execute($s); 63 64while (($s1 = oci_get_implicit_resultset($s))) { 65 while (($row = oci_fetch_array($s1, OCI_ASSOC+OCI_RETURN_NULLS)) != false) { 66 foreach ($row as $item) { 67 echo " ".$item; 68 } 69 echo "\n"; 70 } 71} 72 73// Clean up 74 75$stmtarray = array( 76 "drop procedure imp_res_get_3_proc", 77 "drop table imp_res_get_3_tab_1", 78 "drop table imp_res_get_3_tab_2" 79); 80 81oci8_test_sql_execute($c, $stmtarray); 82 83?> 84--EXPECT-- 85Test 1 86 1 abcde 87 2 fghij 88 3 klmno 89 t 90 u 91 X 92 1 abcde 93 2 fghij 94 3 klmno 95 t 96 u 97 X 98 1 abcde 99 2 fghij 100 3 klmno 101 t 102 u 103 X 104 1 abcde 105 2 fghij 106 3 klmno 107 t 108 u 109 X 110 1 abcde 111 2 fghij 112 3 klmno 113 t 114 u 115 X 116 1 abcde 117 2 fghij 118 3 klmno 119 t 120 u 121 X 122 1 abcde 123 2 fghij 124 3 klmno 125 t 126 u 127 X 128 1 abcde 129 2 fghij 130 3 klmno 131 t 132 u 133 X 134 1 abcde 135 2 fghij 136 3 klmno 137 t 138 u 139 X 140 1 abcde 141 2 fghij 142 3 klmno 143 t 144 u 145 X 146 1 abcde 147 2 fghij 148 3 klmno 149 t 150 u 151 X 152 1 abcde 153 2 fghij 154 3 klmno 155 t 156 u 157 X 158 1 abcde 159 2 fghij 160 3 klmno 161 t 162 u 163 X 164 1 abcde 165 2 fghij 166 3 klmno 167 t 168 u 169 X 170 1 abcde 171 2 fghij 172 3 klmno 173 t 174 u 175 X 176 1 abcde 177 2 fghij 178 3 klmno 179 t 180 u 181 X 182 1 abcde 183 2 fghij 184 3 klmno 185 t 186 u 187 X 188 1 abcde 189 2 fghij 190 3 klmno 191 t 192 u 193 X 194 1 abcde 195 2 fghij 196 3 klmno 197 t 198 u 199 X 200 1 abcde 201 2 fghij 202 3 klmno 203 t 204 u 205 X 206 1 abcde 207 2 fghij 208 3 klmno 209 t 210 u 211 X 212 1 abcde 213 2 fghij 214 3 klmno 215 t 216 u 217 X 218 1 abcde 219 2 fghij 220 3 klmno 221 t 222 u 223 X 224 1 abcde 225 2 fghij 226 3 klmno 227 t 228 u 229 X 230 1 abcde 231 2 fghij 232 3 klmno 233 t 234 u 235 X 236 1 abcde 237 2 fghij 238 3 klmno 239 t 240 u 241 X 242 1 abcde 243 2 fghij 244 3 klmno 245 t 246 u 247 X 248 1 abcde 249 2 fghij 250 3 klmno 251 t 252 u 253 X 254 1 abcde 255 2 fghij 256 3 klmno 257 t 258 u 259 X 260 1 abcde 261 2 fghij 262 3 klmno 263 t 264 u 265 X 266