ver - trasponer en oracle
¿Cuál es la longitud máxima de un nombre de tabla en Oracle? (12)
Enseña a un hombre a pescar
Observe el tipo de datos y el tamaño
>describe all_tab_columns
VIEW all_tab_columns
Name Null? Type
----------------------------------------- -------- ----------------------------
OWNER NOT NULL VARCHAR2(30)
TABLE_NAME NOT NULL VARCHAR2(30)
COLUMN_NAME NOT NULL VARCHAR2(30)
DATA_TYPE VARCHAR2(106)
DATA_TYPE_MOD VARCHAR2(3)
DATA_TYPE_OWNER VARCHAR2(30)
DATA_LENGTH NOT NULL NUMBER
DATA_PRECISION NUMBER
DATA_SCALE NUMBER
NULLABLE VARCHAR2(1)
COLUMN_ID NUMBER
DEFAULT_LENGTH NUMBER
DATA_DEFAULT LONG
NUM_DISTINCT NUMBER
LOW_VALUE RAW(32)
HIGH_VALUE RAW(32)
DENSITY NUMBER
NUM_NULLS NUMBER
NUM_BUCKETS NUMBER
LAST_ANALYZED DATE
SAMPLE_SIZE NUMBER
CHARACTER_SET_NAME VARCHAR2(44)
CHAR_COL_DECL_LENGTH NUMBER
GLOBAL_STATS VARCHAR2(3)
USER_STATS VARCHAR2(3)
AVG_COL_LEN NUMBER
CHAR_LENGTH NUMBER
CHAR_USED VARCHAR2(1)
V80_FMT_IMAGE VARCHAR2(3)
DATA_UPGRADED VARCHAR2(3)
HISTOGRAM VARCHAR2(15)
¿Cuál es la longitud máxima de un nombre de tabla y columna en Oracle?
30 char (bytes, realmente, como se ha dicho).
Pero no confíes en mí; prueba esto por ti mismo:
SQL> create table a23545678901234567890123456789 (my_id number);
Table created.
SQL> create table a235456789012345678901234567890(my_id number);
ERROR at line 1:
ORA-00972: identifier is too long
Correcto, pero siempre que uses caracteres ASCII, incluso un juego de caracteres multibyte aún daría una limitación de exactamente 30 caracteres ... así que a menos que quieras poner corazones y gatos sonrientes en tu nombre, DB te parece bien ...
DESCRIBIR all_tab_columns
mostrará un TABLE_NAME VARCHAR2 (30)
Nota VARCHAR2 (30) significa una limitación de 30 bytes, no una limitación de 30 caracteres, y por lo tanto puede ser diferente si su base de datos está configurada / configurada para usar un juego de caracteres multibyte.
Micro
El tamaño máximo del nombre es de 30 caracteres debido al diccionario de datos que permite el almacenamiento solo para 30 bytes
En Oracle 12.2
, puede usar la constante ORA_MAX_NAME_LEN
, ORA_MAX_NAME_LEN
, establecida en 128 bytes (como en 12.2). Antes de Oracle 12.1
tamaño máximo era de 30 bytes.
En Oracle 12.2 y superior, la longitud máxima del nombre del objeto es de 128 bytes.
En Oracle 12.1 y debajo, la longitud máxima del nombre del objeto es de 30 bytes.
En la base de datos 10g con la que estoy tratando, sé que los nombres de las tablas tienen un máximo de 30 caracteres. No pude decirle cuál es la longitud del nombre de la columna (pero sé que es> 30).
Estoy trabajando en Oracle 12c 12.1. Sin embargo, no parece que permita más de 30 caracteres para los nombres de columna / tabla.
Lea a través de una página de Oracle que menciona 30 bytes. https://docs.oracle.com/database/121/SQLRF/sql_elements008.htm#SQLRF00223
En 12c, aunque all_tab_columns dice VARCHAR2 (128) para Table_Name, no permite más de 30 bytes de nombre.
Encontré otro artículo sobre 12c R2, que parece permitir esto hasta 128 caracteres. https://community.oracle.com/ideas/3338
La longitud máxima de la tabla y el nombre de la columna es de 128 bytes o 128 caracteres. Este límite es para usar usuarios de la base de datos de sybase. Verifiqué esta respuesta a fondo, de modo que publiqué esta respuesta con confianza.
La longitud máxima de los nombres de los objetos de la base de datos Oracle es de 30 bytes .
Reglas de nombre de objeto: http://docs.oracle.com/database/121/SQLRF/sql_elements008.htm
Las reglas de nombres de objeto de esquema también pueden ser de alguna utilidad:
http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements008.htm#sthref723