首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PL/SQL和SQL中VARCHAR2的最大大小是多少?

PL/SQL和SQL中VARCHAR2的最大大小是多少?
EN

Stack Overflow用户
提问于 2014-08-11 15:00:52
回答 4查看 224.5K关注 0票数 35

我在使用Oracle 10g。在一个需求中,我需要增加pl/sql VARCHAR2变量的大小。它已经是4000大小了。I have read that

在PL/SQL中,VARCHAR2最多可达32767个字节。对于SQL,限制为4000字节

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

EN

回答 4

Stack Overflow用户

发布于 2014-08-11 16:45:46

请参阅官方文档(http://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements001.htm#i54330)

具有最大长度、大小、字节或字符的

可变长度字符串。最大为4000字节或字符,最小为1字节或1个字符。您必须指定VARCHAR2的大小。BYTE表示该列将具有字节长度语义;CHAR表示该列将具有字符语义。

但在Oracle数据库12c中可能是32767 (http://docs.oracle.com/database/121/SQLRF/sql_elements001.htm#SQLRF30020)

具有最大长度、大小、字节或字符的

可变长度字符串。您必须指定VARCHAR2的大小。最小大小为1个字节或1个字符。最大大小为: 32767字节或字符(如果MAX_STRING_SIZE =扩展的4000字节)或字符(如果MAX_STRING_SIZE =标准

票数 30
EN

Stack Overflow用户

发布于 2014-08-11 16:58:58

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

代码语言:javascript
复制
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.

但是您不能将这些变量的值插入到您的表中:

代码语言:javascript
复制
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

作为一种解决方案,您可以尝试将该变量的值拆分为几个部分(SUBSTR),并将它们分开存储。

票数 8
EN

Stack Overflow用户

发布于 2016-08-03 01:13:23

根据Andre gives共享的官方文档链接,Oracle10g为varchar2提供了4000字节或字符的最大大小。如果您使用的是更高版本的oracle (例如Oracle12c),则varchar2的最大大小可达32767个字节或字符。要利用oracle 12的扩展数据类型特性,您需要在升级模式下启动oracle。在命令提示符下执行以下步骤:

1) Login as sysdba (sqlplus / as sysdba)

2) SHUTDOWN IMMEDIATE;

3) STARTUP UPGRADE;

4) ALTER SYSTEM SET max_string_size=extended;

5) Oracle\product\12.1.0.2\rdbms\admin\utl32k.sql

6) SHUTDOWN IMMEDIATE;

7) STARTUP;

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25237463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档