bind_number.phpt 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. --TEST--
  2. Bind with NUMBER column variants
  3. --EXTENSIONS--
  4. oci8
  5. --INI--
  6. precision = 14
  7. --FILE--
  8. <?php
  9. require(__DIR__.'/connect.inc');
  10. // Initialization
  11. $stmtarray = array(
  12. "drop table bind_number_tab",
  13. "create table bind_number_tab (
  14. id number,
  15. number_t6 number(6),
  16. float_t float,
  17. binary_float_t binary_float,
  18. binary_double_t binary_double,
  19. decimal_t decimal,
  20. integer_t integer)"
  21. );
  22. oci8_test_sql_execute($c, $stmtarray);
  23. function check_col($c, $colname, $id)
  24. {
  25. $s = oci_parse($c, "select $colname from bind_number_tab where id = :id");
  26. oci_bind_by_name($s, ":id", $id);
  27. oci_execute($s);
  28. oci_fetch_all($s, $r);
  29. var_dump($r);
  30. }
  31. // Run Test
  32. echo "Test 1 - invalid number\n";
  33. $s = oci_parse($c, "INSERT INTO bind_number_tab (id, number_t6) VALUES (1, :n1)");
  34. $n1 = "Hello";
  35. oci_bind_by_name($s, ":n1", $n1);
  36. oci_execute($s);
  37. check_col($c, "number_t6", 1);
  38. echo "\nTEST66 insert a float\n";
  39. $s = oci_parse($c, "INSERT INTO bind_number_tab (id, float_t) VALUES (66, :f1)");
  40. $f1 = 123.456;
  41. oci_bind_by_name($s, ":f1", $f1);
  42. oci_execute($s);
  43. check_col($c, 'float_t', 66);
  44. echo "\nTEST67 insert a binary float\n";
  45. $s = oci_parse($c, "INSERT INTO bind_number_tab (id, binary_float_t) VALUES (67, :f1)");
  46. $f1 = 567.456;
  47. oci_bind_by_name($s, ":f1", $f1);
  48. oci_execute($s);
  49. check_col($c, 'binary_float_t', 67);
  50. echo "\nTEST69 insert a binary double\n";
  51. $s = oci_parse($c, "INSERT INTO bind_number_tab (id, binary_double_t) VALUES (69, :f1)");
  52. $f1 = 567.456;
  53. oci_bind_by_name($s, ":f1", $f1);
  54. oci_execute($s);
  55. check_col($c, 'binary_double_t', 69);
  56. echo "\nTEST71 insert a decimal\n";
  57. $s = oci_parse($c, "INSERT INTO bind_number_tab (id, decimal_t) VALUES (71, :f1)");
  58. $f1 = 123.789;
  59. oci_bind_by_name($s, ":f1", $f1);
  60. oci_execute($s);
  61. check_col($c, 'decimal_t', 71);
  62. echo "\nTEST72 insert a decimal\n";
  63. $s = oci_parse($c, "INSERT INTO bind_number_tab (id, decimal_t) VALUES (72, :f1)");
  64. $f1 = 123.789;
  65. oci_bind_by_name($s, ":f1", $f1, -1, SQLT_NUM);
  66. oci_execute($s);
  67. check_col($c, 'decimal_t', 72);
  68. echo "\nTEST73 insert a double\n";
  69. $s = oci_parse($c, "INSERT INTO bind_number_tab (id, binary_double_t) VALUES (73, :f1)");
  70. $f1 = 483.589;
  71. oci_bind_by_name($s, ":f1", $f1);
  72. oci_execute($s);
  73. check_col($c, 'binary_double_t', 73);
  74. echo "\nTEST75 insert a INTEGER\n";
  75. $s = oci_parse($c, "INSERT INTO bind_number_tab (id, integer_t) VALUES (75, :f1)");
  76. $f1 = 589;
  77. oci_bind_by_name($s, ":f1", $f1);
  78. oci_execute($s);
  79. check_col($c, 'integer_t', 75);
  80. echo "\nTEST76 insert a INTEGER\n";
  81. $s = oci_parse($c, "INSERT INTO bind_number_tab (id, integer_t) VALUES (76, :f1)");
  82. $f1 = 42;
  83. oci_bind_by_name($s, ":f1", $f1, -1, SQLT_INT);
  84. oci_execute($s);
  85. check_col($c, 'integer_t', 76);
  86. // Clean up
  87. $stmtarray = array(
  88. "drop table bind_number_tab"
  89. );
  90. oci8_test_sql_execute($c, $stmtarray);
  91. ?>
  92. --EXPECTF--
  93. Test 1 - invalid number
  94. Warning: oci_execute(): ORA-01722: %s in %sbind_number.php on line %d
  95. array(1) {
  96. ["NUMBER_T6"]=>
  97. array(0) {
  98. }
  99. }
  100. TEST66 insert a float
  101. array(1) {
  102. ["FLOAT_T"]=>
  103. array(1) {
  104. [0]=>
  105. string(7) "123.456"
  106. }
  107. }
  108. TEST67 insert a binary float
  109. array(1) {
  110. ["BINARY_FLOAT_T"]=>
  111. array(1) {
  112. [0]=>
  113. string(%r15|8%r) "%r(5.67455994E\+002|567.4560)%r"
  114. }
  115. }
  116. TEST69 insert a binary double
  117. array(1) {
  118. ["BINARY_DOUBLE_T"]=>
  119. array(1) {
  120. [0]=>
  121. string(%r23|16%r) "%r(5.6745600000000002E\+002|567.456000000000)%r"
  122. }
  123. }
  124. TEST71 insert a decimal
  125. array(1) {
  126. ["DECIMAL_T"]=>
  127. array(1) {
  128. [0]=>
  129. string(3) "124"
  130. }
  131. }
  132. TEST72 insert a decimal
  133. array(1) {
  134. ["DECIMAL_T"]=>
  135. array(1) {
  136. [0]=>
  137. string(1) "0"
  138. }
  139. }
  140. TEST73 insert a double
  141. array(1) {
  142. ["BINARY_DOUBLE_T"]=>
  143. array(1) {
  144. [0]=>
  145. string(%r12|16%r) "%r(4.83589E\+002|483.589000000000)%r"
  146. }
  147. }
  148. TEST75 insert a INTEGER
  149. array(1) {
  150. ["INTEGER_T"]=>
  151. array(1) {
  152. [0]=>
  153. string(3) "589"
  154. }
  155. }
  156. TEST76 insert a INTEGER
  157. array(1) {
  158. ["INTEGER_T"]=>
  159. array(1) {
  160. [0]=>
  161. string(2) "42"
  162. }
  163. }