我必须使用 php 将包含 html 数据的字符串存储到 oracle blob 字段中
考虑使用 CLOB 而不是 BLOB。 HTML 可以被认为是一个字符串文字。字符串文字本质上是 VARCHAR2。因此,字符串文字的长度不能超过4000 characters。您需要将它们分别追加到 4000 bytes 到单个 CLOB 中以存储超过 4000 个字节。
来自documentation,
包含单字节或多字节的字符大对象
人物。固定宽度和可变宽度字符集都是
支持,两者都使用数据库字符集。 最大尺寸为 (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