Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: PHP 5.2.5 и CLOB (ошибка или ...)
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » PHP 5.2.5 и CLOB (ошибка или ...)

Страниц (1): [1]
 

1. SergeyNZ - 24 Апреля, 2008 - 16:37:28 - перейти к сообщению
Пытаюсь перейти с Apache 1.3 + PHP 4.3.8 на Apache 2.2 + PHP 5.2.5
Возникла следующая проблема
Есть процедура на Oracle, котрая при mode=1 принимает CLOB и записывает его в таблицу(код пропущен),
в остальных случаях возвращает CLOB

CODE (text):
скопировать код в буфер обмена
  1.  
  2.  CREATE OR REPLACE PROCEDURE .test (p_mode IN Integer, P_CLOB IN OUT CLOB) IS
  3.  BEGIN
  4.    if p_mode=1 then
  5.      --insert into table
  6.      NULL;
  7.    else
  8.      P_CLOB := 'Test message';
  9.    end if;
  10.  END;
  11.  
  12.  


и есть простой код на PHP

PHP:
скопировать код в буфер обмена
  1.  
  2.  $oracon = ocilogon("Login", "Pas", "STR");
  3.  
  4.      $mode = 2;
  5.      $fl_soob = "Input Clob";
  6.  
  7.      $s = OCIParse($oracon, "begin test(:mode, :fl_soob); end;");
  8.      OCIBindByName($s, ":mode", $mode);
  9.      $lob = ocinewdescriptor($oracon, OCI_DTYPE_LOB );
  10.      if(mode==1) //insert clob
  11.          $lob->WriteTemporary($fl_soob);
  12.      else  //select clob
  13.          $lob->WriteTemporary('  ');
  14.      OCIBindByName($s, ":fl_soob", $lob, -1, OCI_B_CLOB);
  15.      OCIExecute($s, OCI_DEFAULT);
  16.      OCICommit($oracon);
  17.      $fl_soob = $lob->load();
  18.      echo  $fl_soob;
  19.  



на PHP 4 возвращается Test message
на PHP 5 возвращается Te
если написать так $lob->WriteTemporary(' '); //3 пробела
то на PHP5 возвращается Tes

Как сделать так чтобы работало правильно т.е. как на PHP4

Спасибо

 

Powered by ExBB FM 1.0 RC1