我必须使用php将包含html数据的字符串存储到oracle blob字段中。所以我正在使用
utl_raw.cast_to_raw('myString')
但是当myString大小超过4000字节时我无法存储。 怎么解决这个问题?
答案 0 :(得分:1)
我必须使用php
将包含html数据的字符串存储到oracle blob字段中
考虑使用 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
答案 1 :(得分:0)