lob_022.phpt 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. --TEST--
  2. fetching the same lob several times
  3. --EXTENSIONS--
  4. oci8
  5. --SKIPIF--
  6. <?php
  7. $target_dbs = array('oracledb' => true, 'timesten' => false); // test runs on these DBs
  8. require(__DIR__.'/skipif.inc');
  9. ?>
  10. --FILE--
  11. <?php
  12. require __DIR__.'/connect.inc';
  13. $drop = "DROP table lob_test";
  14. $statement = oci_parse($c, $drop);
  15. @oci_execute($statement);
  16. $create = "CREATE table lob_test(mykey NUMBER, lob_1 CLOB)";
  17. $statement = oci_parse($c, $create);
  18. oci_execute($statement);
  19. $init = "INSERT INTO lob_test (mykey, lob_1) VALUES(1, EMPTY_CLOB()) RETURNING lob_1 INTO :mylob";
  20. $statement = oci_parse($c, $init);
  21. $clob = oci_new_descriptor($c, OCI_D_LOB);
  22. oci_bind_by_name($statement, ":mylob", $clob, -1, OCI_B_CLOB);
  23. oci_execute($statement, OCI_DEFAULT);
  24. oci_lob_save($clob, "data");
  25. unset($clob->descriptor);
  26. oci_commit($c);
  27. $init = "INSERT INTO lob_test (mykey, lob_1) VALUES(2, EMPTY_CLOB()) RETURNING lob_1 INTO :mylob";
  28. $statement = oci_parse($c, $init);
  29. $clob = oci_new_descriptor($c, OCI_D_LOB);
  30. oci_bind_by_name($statement, ":mylob", $clob, -1, OCI_B_CLOB);
  31. oci_execute($statement, OCI_DEFAULT);
  32. $clob->save("long data");
  33. $clob->save("long data", 0);
  34. try {
  35. $clob->save("long data", -1);
  36. } catch (ValueError $e) {
  37. echo $e->getMessage(), "\n";
  38. }
  39. oci_commit($c);
  40. $query = 'SELECT * FROM lob_test ORDER BY mykey ASC';
  41. $statement = oci_parse ($c, $query);
  42. oci_execute($statement, OCI_DEFAULT);
  43. while ($row = oci_fetch_array($statement, OCI_ASSOC)) {
  44. $result = $row['LOB_1']->load();
  45. var_dump($result);
  46. }
  47. $query = 'SELECT * FROM lob_test ORDER BY mykey DESC';
  48. $statement = oci_parse ($c, $query);
  49. oci_execute($statement, OCI_DEFAULT);
  50. while ($row = oci_fetch_array($statement, OCI_ASSOC)) {
  51. $result = $row['LOB_1']->load();
  52. var_dump($result);
  53. }
  54. $drop = "DROP table lob_test";
  55. $statement = oci_parse($c, $drop);
  56. @oci_execute($statement);
  57. echo "Done\n";
  58. ?>
  59. --EXPECT--
  60. OCILob::save(): Argument #2 ($offset) must be greater than or equal to 0
  61. string(4) "data"
  62. string(9) "long data"
  63. string(9) "long data"
  64. string(4) "data"
  65. Done