Я должен хранить строку, содержащую html-данные, в поле blob-поля oracle, используя php.So. Я использую
utl_raw.cast_to_raw('myString')
Но я не могу хранить, когда размер myString превышает 4000 байтов. Как это решить?
Я должен хранить строку, содержащую 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
Blob используются для двоичных данных (изображение, документы), если вы используете TEXTS вместо CLOB.
BLOB - это двоичные LOB. CLOB являются символьными LOB.
С помощью CLOB вы можете хранить более 4000 байт