За последние 24 часа нас посетили 17628 программистов и 1412 роботов. Сейчас ищут 1894 программиста ...

PHP 5.2.5 и CLOB (ошибка или ...)

Тема в разделе "Oracle Database", создана пользователем SergeyNZ, 24 апр 2008.

  1. SergeyNZ

    SergeyNZ Активный пользователь

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

    [sql]
    CREATE OR REPLACE PROCEDURE .test (p_mode IN Integer, P_CLOB IN OUT CLOB) IS
    BEGIN
    if p_mode=1 then
    --insert into table
    NULL;
    else
    P_CLOB := 'Test message';
    end if;
    END;
    [/sql]
    и есть простой код на 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

    Спасибо
     
  2. ozland

    ozland Активный пользователь

    С нами с:
    15 июл 2008
    Сообщения:
    16
    Симпатии:
    0
  3. Anonymous

    Anonymous Guest

    Поганый некрофил.