Esta sección proporciona detalles sobre las reglas y restricciones de LOB.
Reglas para columnas LOB
Las columnas LOB tienen las siguientes reglas y restricciones:
- No puede especificar un LOB como columna de clave principal.
- Oracle Database tiene soporte limitado para LOB remotos. Los LOB remotos se admiten de tres maneras.
- Crear tabla como selección o insertar como selección.
CREATE
TABLE
t
AS
SELECT
*
FROM
table1@remote_site;
INSERT
INTO
t
SELECT
*
FROM
table1@remote_site;
UPDATE
t
SET
lobolm = (
SELECT
lobclm
FROM
table1@remote_site);
INSERT
INTO
table1@remote_site
SELECT
*
FROM
local_table;
- Funciones en LOB remotos que devuelven escalares. Se admiten las funciones SQL y PL/SQL que tienen un parámetro LOB y devuelven un tipo de datos escalar. No se admite el uso de otras funciones SQL y API DBMS_LOB con columnas LOB remotas. Por ejemplo, se admite la siguiente instrucción:
CREATE
TABLE
tab
AS
SELECT
dbms_lob.Getlength@dbs2(clob_col) len
FROM
tab@dbs2;
CREATE
TABLE
tab
AS
SELECT
Length(clob_col) len
FROM
tab@dbs2;
Además, la siguiente declaración no es compatible porque DBMS_LOB.SUBSTR devuelve un LOB:
CREATE
TABLE
tab
AS
SELECT
dbms_lob.Substr(clob_col)
FROM
tab@dbs2;
- Interfaz de datos para LOB remotos. Puede insertar un búfer binario o de caracteres en un BLOB o CLOB remoto y seleccionar un CLOB o BLOB remoto en un búfer binario o de caracteres. Por ejemplo (en PL/SQL):
SELECT
clobcol1,
type1.blobattr
INTO
varchar_buf1,
raw_buf2
FROM
table1@remote_site;
INSERT
INTO
table1@remotesite
(
clobcol1,
type1.blobattr
)
VALUES
varchar_buf1,
raw_buf2;
INSERT
INTO
table1@remotesite
(
lobcol
)
VALUES
(
'test'
);
UPDATE
table1
SET
lobcol =
'xxx'
;
Estas son las únicas sintaxis admitidas que involucran LOB en tablas remotas. No se admite ningún otro uso.
- Crear tabla como selección o insertar como selección.
- Los clústeres no pueden contener LOB, pueden contener columnas clave o no clave .
- Las estructuras de datos definidas a continuación solo se admiten como instancias temporales . No puede almacenar estas instancias en tablas de bases de datos:
- VARRAY de cualquier tipo LOB
- VARRAY de cualquier tipo que contenga un tipo LOB, como un tipo de objeto con un atributo LOB
- ANYDATA de cualquier tipo LOB
- ANYDATA de cualquier tipo que contenga un LOB
- No puede especificar columnas LOB en la cláusula GROUP BY de una consulta, en la cláusula ORDER BY de una consulta o en una función agregada.
- No puede especificar una columna LOB en una declaración SELECT… UNIQUE o SELECT… DISTINCT o en una combinación. Puede especificar un atributo LOB de una columna de tipo de objeto en una consulta que utiliza el operador de conjunto UNION o MINUS o en una sentencia SELECT… DISTINCT si el tipo de objeto de la columna tiene definida una función MAP u ORDER BY.
- La primera extensión ( INICIAL ) de un segmento LOB debe contener al menos tres bloques de base de datos.
- Al crear un activador DML AFTER UPDATE , no puede especificar una columna LOB en la cláusula UPDATE OF .
- No puede definir una columna LOB como parte de una clave de índice. Sin embargo, puede especificar una columna LOB en la especificación de tipo de índice de un índice de dominio.
- En una operación INSERT… AS SELECT , LOB le permite vincular hasta 4000 bytes de datos a atributos y columnas LOB.
- Si una tabla contiene columnas LONG y LOB, no puede vincular más de 4000 bytes de datos a las columnas LONG y LOB en la misma instrucción SQL, mientras que puede vincular más de 4000 bytes de datos a LONG o LOB. columna.
Publicación traducida automáticamente
Artículo escrito por ShubhamMaurya3 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA