bind_sqltnum_11g.phpt 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. --TEST--
  2. Bind with SQLT_NUM
  3. --SKIPIF--
  4. <?php
  5. if (!extension_loaded('oci8')) die("skip no oci8 extension");
  6. preg_match('/^[[:digit:]]+/', oci_client_version(), $matches);
  7. if (!(isset($matches[0]) && $matches[0] <= 11)) {
  8. die("skip works only with Oracle 11 or earlier version of Oracle client libraries");
  9. }
  10. ?>
  11. --FILE--
  12. <?php
  13. require(dirname(__FILE__).'/connect.inc');
  14. // Initialization
  15. $stmtarray = array(
  16. "drop table bind_sqltnum_tab",
  17. "create table bind_sqltnum_tab (
  18. id number,
  19. varchar2_t10 varchar2(10),
  20. number_t number,
  21. number_t92 number(9,2))"
  22. );
  23. oci8_test_sql_execute($c, $stmtarray);
  24. function check_col($c, $colname, $id)
  25. {
  26. $s = oci_parse($c, "select $colname from bind_sqltnum_tab where id = :id");
  27. oci_bind_by_name($s, ":id", $id);
  28. oci_execute($s);
  29. oci_fetch_all($s, $r);
  30. var_dump($r);
  31. }
  32. // Run Test
  33. echo "Test 1 - baseline test\n";
  34. $s = oci_parse($c, "INSERT INTO bind_sqltnum_tab (id, varchar2_t10) VALUES (100, :c2)");
  35. $c2 = "Hood";
  36. $r = oci_bind_by_name($s, ":c2", $c2, -1);
  37. if (!$r) {
  38. $e = oci_error($s);
  39. var_dump($e);
  40. }
  41. $r = oci_execute($s, OCI_DEFAULT);
  42. if (!$r) {
  43. $e = oci_error($s);
  44. var_dump($e);
  45. }
  46. $s = oci_parse($c, "select id, varchar2_t10 from bind_sqltnum_tab");
  47. oci_execute($s);
  48. oci_fetch_all($s, $data);
  49. var_dump($data);
  50. echo "Test 2 - SQLT_NUM to a VARCHAR2 column\n";
  51. $s = oci_parse($c, "INSERT INTO bind_sqltnum_tab (id, varchar2_t10) VALUES (100, :c2)");
  52. $c2 = "Hood";
  53. $r = oci_bind_by_name($s, ":c2", $c2, -1, SQLT_NUM);
  54. if (!$r) {
  55. $e = oci_error($s);
  56. var_dump($e['message']);
  57. }
  58. $r = oci_execute($s, OCI_DEFAULT);
  59. if (!$r) {
  60. $e = oci_error($s);
  61. var_dump($e['message']);
  62. }
  63. echo "\nTEST41 wrong bind type SQLT_NUM\n";
  64. $c2 = "Hood41";
  65. $s = oci_parse($c, "INSERT INTO bind_sqltnum_tab (id, varchar2_t10) VALUES (41, :c2)");
  66. oci_bind_by_name($s, ":c2", $c2, -1, SQLT_NUM);
  67. oci_execute($s);
  68. echo "\nTEST42 insert numbers SQLT_NUM\n";
  69. $s = oci_parse($c, "INSERT INTO bind_sqltnum_tab (id, number_t) VALUES (42, :n1)");
  70. $n1 = 42;
  71. oci_bind_by_name($s, ":n1", $n1, -1, SQLT_NUM);
  72. oci_execute($s);
  73. check_col($c, 'number_t', 42);
  74. echo "\nTEST43 insert numbers SQLT_NUM\n";
  75. $s = oci_parse($c, "INSERT INTO bind_sqltnum_tab (id, number_t) VALUES (43, :n1)");
  76. $n1 = 42.69;
  77. oci_bind_by_name($s, ":n1", $n1, -1, SQLT_NUM);
  78. oci_execute($s);
  79. check_col($c, 'number_t', 43);
  80. echo "\nTEST44\n";
  81. $s = oci_parse($c, "INSERT INTO bind_sqltnum_tab (id, number_t) VALUES (44, :n1)");
  82. $n1 = 0;
  83. oci_bind_by_name($s, ":n1", $n1, -1, SQLT_NUM);
  84. oci_execute($s);
  85. check_col($c, 'number_t', 44);
  86. echo "\nTEST45\n";
  87. $s = oci_parse($c, "INSERT INTO bind_sqltnum_tab (id, number_t) VALUES (45, :n1)");
  88. $n1 = -23;
  89. oci_bind_by_name($s, ":n1", $n1, -1, SQLT_NUM);
  90. oci_execute($s);
  91. check_col($c, 'number_t', 45);
  92. echo "\nTEST46 insert numbers\n";
  93. $s = oci_parse($c, "INSERT INTO bind_sqltnum_tab (id, number_t) VALUES (46, :n1)");
  94. $n1 = "-23";
  95. oci_bind_by_name($s, ":n1", $n1, -1, SQLT_NUM);
  96. oci_execute($s);
  97. check_col($c, 'number_t', 46);
  98. echo "\nTEST47\n";
  99. $s = oci_parse($c, "INSERT INTO bind_sqltnum_tab (id, number_t) VALUES (47, :n1)");
  100. $n1 = "23";
  101. oci_bind_by_name($s, ":n1", $n1, -1, SQLT_NUM);
  102. oci_execute($s);
  103. check_col($c, 'number_t', 47);
  104. echo "\nTEST48\n";
  105. $s = oci_parse($c, "INSERT INTO bind_sqltnum_tab (id, number_t92) VALUES (48, :n1)");
  106. $n1 = 123.56;
  107. oci_bind_by_name($s, ":n1", $n1, -1, SQLT_NUM);
  108. oci_execute($s);
  109. check_col($c, 'number_t92', 48);
  110. echo "\nTEST49\n";
  111. $s = oci_parse($c, "INSERT INTO bind_sqltnum_tab (id, number_t92) VALUES (49, :n1)");
  112. $n1 = "123.56";
  113. oci_bind_by_name($s, ":n1", $n1, -1, SQLT_NUM);
  114. oci_execute($s);
  115. check_col($c, 'number_t92', 49);
  116. echo "\nTEST50\n";
  117. $s = oci_parse($c, "INSERT INTO bind_sqltnum_tab (id, number_t92) VALUES (50, :n1)");
  118. $n1 = "";
  119. oci_bind_by_name($s, ":n1", $n1, -1, SQLT_NUM);
  120. oci_execute($s);
  121. check_col($c, 'number_t92', 50);
  122. // Clean up
  123. $stmtarray = array(
  124. "drop table bind_sqltnum_tab"
  125. );
  126. oci8_test_sql_execute($c, $stmtarray);
  127. ?>
  128. ===DONE===
  129. <?php exit(0); ?>
  130. --EXPECTF--
  131. Test 1 - baseline test
  132. array(2) {
  133. ["ID"]=>
  134. array(1) {
  135. [0]=>
  136. string(3) "100"
  137. }
  138. ["VARCHAR2_T10"]=>
  139. array(1) {
  140. [0]=>
  141. string(4) "Hood"
  142. }
  143. }
  144. Test 2 - SQLT_NUM to a VARCHAR2 column
  145. Warning: oci_execute(): ORA-12899: %s (%s: 40, %s: 10) in %sbind_sqltnum_11g.php on line %d
  146. string(%d) "ORA-12899: %s"
  147. TEST41 wrong bind type SQLT_NUM
  148. Warning: oci_execute(): ORA-12899: %s "%s"."BIND_SQLTNUM_TAB"."VARCHAR2_T10" (%s: 40, %s: 10) in %sbind_sqltnum_11g.php on line %d
  149. TEST42 insert numbers SQLT_NUM
  150. array(1) {
  151. ["NUMBER_T"]=>
  152. array(1) {
  153. [0]=>
  154. NULL
  155. }
  156. }
  157. TEST43 insert numbers SQLT_NUM
  158. array(1) {
  159. ["NUMBER_T"]=>
  160. array(1) {
  161. [0]=>
  162. NULL
  163. }
  164. }
  165. TEST44
  166. array(1) {
  167. ["NUMBER_T"]=>
  168. array(1) {
  169. [0]=>
  170. string(127) "-000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
  171. }
  172. }
  173. TEST45
  174. array(1) {
  175. ["NUMBER_T"]=>
  176. array(1) {
  177. [0]=>
  178. NULL
  179. }
  180. }
  181. TEST46 insert numbers
  182. array(1) {
  183. ["NUMBER_T"]=>
  184. array(1) {
  185. [0]=>
  186. NULL
  187. }
  188. }
  189. TEST47
  190. array(1) {
  191. ["NUMBER_T"]=>
  192. array(1) {
  193. [0]=>
  194. NULL
  195. }
  196. }
  197. TEST48
  198. array(1) {
  199. ["NUMBER_T92"]=>
  200. array(1) {
  201. [0]=>
  202. string(1) "0"
  203. }
  204. }
  205. TEST49
  206. array(1) {
  207. ["NUMBER_T92"]=>
  208. array(1) {
  209. [0]=>
  210. string(1) "0"
  211. }
  212. }
  213. TEST50
  214. Warning: oci_execute(): ORA-01438: %s in %sbind_sqltnum_11g.php on line %d
  215. array(1) {
  216. ["NUMBER_T92"]=>
  217. array(0) {
  218. }
  219. }
  220. ===DONE===