在PL/SQL和SQL中,VARCHAR 2的最大大小是多少?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (16)

我在Oracle10g。在需求中,我需要增加pl/SQLvarchar2变量的大小。它已经有4000大小了。

我可以在不担心SQL限制的情况下增加这个变量的大小吗?

提问于
用户回答回答于

如果您使用UTF-8编码,那么一个字符可以占用不同的字节数(2-4)。对于PL/SQL,varchar2的限制是32767字节,而不是字符。请参见如何增加4000字符大小的PL/SQLvarchar2变量:

SQL> set serveroutput on
SQL> l
  1  declare
  2    l_var varchar2(30000);
  3  begin
  4    l_var := rpad('A', 4000);
  5    dbms_output.put_line(length(l_var));
  6    l_var := l_var || rpad('B', 10000);
  7    dbms_output.put_line(length(l_var));
  8* end;
SQL> /
4000
14000

PL/SQL procedure successfully completed.

但不能将以下变量的值插入到表中:

SQL> ed
Wrote file afiedt.buf

  1  create table ttt (
  2    col1 varchar2(2000 char)
  3* )
SQL> /

Table created.

SQL> ed
Wrote file afiedt.buf

  1  declare
  2    l_var varchar2(30000);
  3  begin
  4      l_var := rpad('A', 4000);
  5      dbms_output.put_line(length(l_var));
  6      l_var := l_var || rpad('B', 10000);
  7      dbms_output.put_line(length(l_var));
  8      insert into ttt values (l_var);
  9* end;
SQL> /
4000
14000
declare
*
ERROR at line 1:
ORA-01461: can bind a LONG value only for insert into a LONG column
ORA-06512: at line 8

扫码关注云+社区