lob_035.phpt 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. --TEST--
  2. oci_lob_copy() - 2
  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. require __DIR__.'/create_table.inc';
  14. $ora_sql = "INSERT INTO
  15. ".$schema.$table_name." (id, blob)
  16. VALUES (1, empty_blob())
  17. RETURNING
  18. blob
  19. INTO :v_blob ";
  20. $statement = oci_parse($c,$ora_sql);
  21. $blob = oci_new_descriptor($c,OCI_D_LOB);
  22. oci_bind_by_name($statement,":v_blob", $blob,-1,OCI_B_BLOB);
  23. oci_execute($statement, OCI_DEFAULT);
  24. echo "Writing blob\n";
  25. var_dump($blob->write("some string here. string, I said"));
  26. oci_commit($c);
  27. $ora_sql = "INSERT INTO
  28. ".$schema.$table_name." (id, blob)
  29. VALUES (2, empty_blob())
  30. RETURNING
  31. blob
  32. INTO :v_blob ";
  33. $statement = oci_parse($c,$ora_sql);
  34. $blob = oci_new_descriptor($c,OCI_D_LOB);
  35. oci_bind_by_name($statement,":v_blob", $blob,-1,OCI_B_BLOB);
  36. oci_execute($statement, OCI_DEFAULT);
  37. oci_commit($c);
  38. $select_sql = "SELECT blob FROM ".$schema.$table_name." WHERE id = 1";
  39. $s = oci_parse($c, $select_sql);
  40. oci_execute($s);
  41. $row1 = oci_fetch_array($s);
  42. $select_sql = "SELECT blob FROM ".$schema.$table_name." WHERE id = 2 FOR UPDATE";
  43. $s = oci_parse($c, $select_sql);
  44. oci_execute($s, OCI_DEFAULT);
  45. $row2 = oci_fetch_array($s);
  46. $dummy = oci_new_descriptor($c, OCI_D_LOB);
  47. //--------------------------------------------------
  48. echo "\noci_lob_copy invalid args\n";
  49. var_dump(oci_lob_copy($dummy, $row1[0]));
  50. var_dump(oci_lob_copy($row2[0], $dummy));
  51. var_dump(oci_lob_copy($row2[0], $row1[0], 0));
  52. var_dump(oci_lob_copy($row2[0], $row1[0], 100000));
  53. try {
  54. var_dump(oci_lob_copy($row2[0], $row1[0], -1));
  55. } catch (ValueError $e) {
  56. echo $e->getMessage(), "\n";
  57. }
  58. //--------------------------------------------------
  59. echo "\noci_lob_size tests\n";
  60. var_dump(oci_lob_size($row2[0]));
  61. unset($dummy->descriptor);
  62. var_dump(oci_lob_size($dummy));
  63. oci_rollback($c);
  64. //--------------------------------------------------
  65. echo "\nQuery test\n";
  66. $select_sql = "SELECT blob FROM ".$schema.$table_name." WHERE id = 2 FOR UPDATE";
  67. $s = oci_parse($c, $select_sql);
  68. oci_execute($s, OCI_DEFAULT);
  69. var_dump($row2 = oci_fetch_array($s, OCI_RETURN_LOBS));
  70. require __DIR__.'/drop_table.inc';
  71. echo "Done\n";
  72. ?>
  73. --EXPECTF--
  74. Writing blob
  75. int(32)
  76. oci_lob_copy invalid args
  77. Warning: oci_lob_copy(): OCI_INVALID_HANDLE in %s on line %d
  78. bool(false)
  79. Warning: oci_lob_copy(): OCI_INVALID_HANDLE in %s on line %d
  80. bool(false)
  81. bool(false)
  82. bool(true)
  83. oci_lob_copy(): Argument #3 ($length) must be greater than or equal to 0
  84. oci_lob_size tests
  85. int(0)
  86. Warning: oci_lob_size(): Unable to find descriptor property in %s on line %d
  87. bool(false)
  88. Query test
  89. array(2) {
  90. [0]=>
  91. string(0) ""
  92. ["BLOB"]=>
  93. string(0) ""
  94. }
  95. Done