bind_sqltnum_11g.phpt 5.3 KB

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