programing

PL/SQL 및 SQL에서 VARCHAR2의 최대 크기는 얼마입니까?

closeapi 2023. 2. 25. 20:59
반응형

PL/SQL 및 SQL에서 VARCHAR2의 최대 크기는 얼마입니까?

Oracle 10g을 사용하고 있습니다.요구 사항에서 pl/sql VARCHAR2 변수의 크기를 늘려야 합니다.이미 4000사이즈입니다.읽은 적이 있다

PL/SQL에서는 VARCHAR2는 최대 32767바이트까지 사용할 수 있습니다.SQL의 경우 제한은 4000바이트입니다.

SQL 제한에 대해 걱정하지 않고 이 변수의 크기를 늘릴 수 있습니까?

공식 매뉴얼(http://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements001.htm#i54330)을 참조해 주세요.

최대 길이 크기 바이트 또는 문자를 가진 가변 길이 문자열입니다.최대 사이즈는 4000바이트 또는 문자, 최소 사이즈는 1바이트 또는 1자입니다.VARCHAR2의 크기를 지정해야 합니다.BYTE는 열에 바이트 길이의 의미론이 있음을 나타내고 CHAR은 열에 문자 의미가 있음을 나타냅니다.

단, Oracle Databast 12c에서는 32767(http://docs.oracle.com/database/121/SQLRF/sql_elements001.htm#SQLRF30020)을 참조하십시오.

최대 길이 크기 바이트 또는 문자를 가진 가변 길이 문자열입니다.VARCHAR2의 크기를 지정해야 합니다.최소 크기는 1바이트 또는 1자입니다.최대 크기는 MAX_STRING_SIZE = EXTENDED 4000 바이트인 경우 32767 바이트 또는 문자 또는 MAX_STRING_SIZE = STANDARD인 경우 문자입니다.

Andre Kirpitch가 공유하는 공식 문서 링크에 따르면 Oracle 10g은 varchar2의 최대 4000바이트 또는 문자를 제공합니다.Oracle 12c와 같은 상위 버전의 Oracle을 사용하는 경우 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;

UTF-8 인코딩을 사용하는 경우, 1 문자는 다양한 바이트 수(2~4)를 가질 수 있습니다.PL/SQL의 경우 varchar2 제한은 문자가 아닌 32767바이트입니다.4000 문자 크기의 PL/SQL varchar2 변수를 늘리는 방법을 참조하십시오.

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

해결책으로 이 변수의 값을 여러 부분(SUBSstr)으로 분할하여 별도로 저장할 수 있습니다.

"SQL 제한에 대해 걱정하지 않고 이 변수의 크기를 늘릴 수 있습니까?"가 무엇을 의미하는지 잘 모르겠습니다.4000을 넘는 VARCHAR2를 VARCHAR2 SQL 열에 삽입하려고 하지 않는 한 걱정할 필요가 없습니다.

여기 정확한 레퍼런스가 있습니다(이것은 11g이지만, 10g도 마찬가지입니다).

http://docs.oracle.com/cd/E11882_01/appdev.112/e17126/datatypes.htm

VARCHAR2 최대 사이즈(PL/SQL): 32,767 바이트(SQL 4,000 바이트)

Oracle 19:

최대 크기: 4000바이트, MAX_STRING_SIZE 초기화 파라미터가 EXTENDED로 설정되어 있는 경우 32767바이트

언급URL : https://stackoverflow.com/questions/25237463/what-is-the-max-size-of-varchar2-in-pl-sql-and-sql

반응형