Сохраните строку HTML в бланк Oracle

1

Я должен хранить строку, содержащую html-данные, в поле blob-поля oracle, используя php.So. Я использую

utl_raw.cast_to_raw('myString')

Но я не могу хранить, когда размер myString превышает 4000 байтов. Как это решить?

  • 0
    Можете ли вы показать нам еще немного своего кода?
  • 0
    $ myString = '<таблица> <tbody> <tr> <td> некоторый текст </ td> </ tr> </ tbody> </ table>'; query = "обновить table_file set result = utl_raw.cast_to_raw ('$ myString') где slno = 1";
Показать ещё 1 комментарий
Теги:

2 ответа

1

Я должен хранить строку, содержащую html-данные, в поле blob-поля oracle, используя php

Рассмотрим использование CLOB, а не BLOB. HTML можно считать строковым литералом. Строковый литерал по существу является VARCHAR2. Таким образом, вы не можете иметь строковый литерал длиной более 4000 characters. Вам нужно добавить их до 4000 bytes в куски в один CLOB для хранения более 4000 байт.

Из документации,

Символьный большой объект, содержащий однобайтовые или многобайтовые символы. Поддерживаются как набор символов фиксированной и переменной ширины, так и набор символов базы данных. Максимальный размер (4 гигабайта - 1) * (размер блока базы данных).

Например,

SQL> CREATE TABLE t_clob
  2    (col CLOB
  3    );

Table created.

SQL> INSERT
  2  INTO t_clob VALUES
  3    (
  4    TO_CLOB
  5    (RPAD('<table ><tbody><tr><td>Some text</td></tr></tbody></table>', 4000, '*'))
  6    ||RPAD('<table ><tbody><tr><td>Some text</td></tr></tbody></table>', 4000, '*')
  7    ||RPAD('<table ><tbody><tr><td>Some text</td></tr></tbody></table>', 4000, '*')
  8    );

1 row created.

SQL> SELECT LENGTH(col) FROM t_clob;

LENGTH(COL)
-----------
      12000

Начиная с Oracle 12c, максимальный размер VARCHAR2 теперь расширяется до 32767 байт. По умолчанию параметр MAX_STRING_SIZE является STANDARD, который может содержать до 4000 байт.

SQL> show parameter MAX_STRING_SIZE

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
max_string_size                      string      STANDARD

Вы можете изменить значение параметра EXTENDED и увеличить максимальное значение VARCHAR2 до 32767 байт.

В основном есть два важных шага:

ALTER SYSTEM SET max_string_size=extended;

@?/rdbms/admin/utl32k
0

Blob используются для двоичных данных (изображение, документы), если вы используете TEXTS вместо CLOB.

BLOB - это двоичные LOB. CLOB являются символьными LOB.

С помощью CLOB вы можете хранить более 4000 байт

  • 1
    « С CLOB вы можете хранить более 4000 байтов » Да, но вы не можете сформировать строку более 4000 байтов в SQL. Вы должны сделать это кусками.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню