powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / php + oracle clob + хранимая процедура
2 сообщений из 2, страница 1 из 1
php + oracle clob + хранимая процедура
    #38909534
ikonst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет!

Пытаюсь получить большую строку (>4K) из php и обработать ее.
Хранимая процедура:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE OR REPLACE FUNCTION zoo.addr_add_list (amid INTEGER, astr IN CLOB)
   RETURN INTEGER
IS
   mres                       INTEGER;
   mid                        INTEGER;
   mclobpointer               CLOB := EMPTY_CLOB;
BEGIN
  ...................
   RETURN mres;
END;



PHP:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
  $mSQL = "
DECLARE
  mres INTEGER;
  mstr CLOB := EMPTY_CLOB();
BEGIN
  DBMS_LOB.CREATETEMPORARY(mstr, true);
  DBMS_LOB.OPEN(mstr, DBMS_LOB.LOB_READWRITE);
  DBMS_LOB.write(mstr, $mlen, 1, :liststr);

  mres := zoo.addr_add_list($mmid, mstr);

  DBMS_LOB.FREETEMPORARY(mstr);

  COMMIT;
END;
";

  $stmt = oci_parse($conn, $mSQL);
 
  $mclob = oci_new_descriptor($conn, OCI_D_LOB);
  oci_bind_by_name($stmt, ':liststr', $mclob, -1, OCI_B_CLOB);

  $mclob->writetemporary($maddrlist);

  oci_execute($stmt, OCI_DEFAULT);



В случае записи нескольких символов - все работает отлично, но если отправить текст около 150К, то происходит ошибка:
ORA-06502: PL/SQL: numeric or value error ORA-06512: at line 8
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
DECLARE
   mres               INTEGER;
   mstr               CLOB := EMPTY_CLOB ();
BEGIN
   DBMS_LOB.createtemporary (mstr, TRUE);
   DBMS_LOB.open (mstr, DBMS_LOB.lob_readwrite);
   DBMS_LOB.write (mstr,
                   DBMS_LOB.getlength (:liststr),
                   1,
                   :liststr);
   mres := zoo.addr_add_list (-222, mstr);
   DBMS_LOB.freetemporary (mstr);
   COMMIT;
END;



В чем может быть дело, почему малое кол-во проходит, а большое - нет?
...
Рейтинг: 0 / 0
php + oracle clob + хранимая процедура
    #38909571
ikonst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема решилась - запутался в 3ех соснах

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
DECLARE
  mres INTEGER;
  mstr CLOB := EMPTY_CLOB();
  mlen integer;
BEGIN
  mres := zoo.addr_add_list($mmid, :liststr);

  COMMIT;
END;
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / php + oracle clob + хранимая процедура
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]