Oracle 19c introduce algunas mejoras significativas en el manejo de datos en formato JSON. En este artículo en particular voy a explicar las mejoras introducidas a la función JSON_OBJECT.

 

En los siguientes ejemplos, vamos a utilizar una tabla llamada Producto que podemos crear con el script incluido a continuación:

 

CREATE TABLE Producto (

      ID NUMBER(10) NOT NULL,

      Marca VARCHAR(100) NOT NULL,

      Nombre VARCHAR(100) NOT NULL,

      Precio NUMBER(10,4) NOT NULL,

      CONSTRAINT PK_Producto PRIMARY KEY (ID)

);

INSERT INTO Producto VALUES (1, 'Sony', 'TV LED 40"', 20000);

INSERT INTO Producto VALUES (2, 'Philips', 'TV LED 32"', 15000 );

INSERT INTO Producto VALUES (3, 'Motorola', 'Moto Z4', 25000);

--

COMMIT;

 

 

Uso de Comodín

Es posible utilizar el comodín “*” para referenciar todas las columnas en un solo paso. Se puede usar el mismo para toda la consulta o para una tabla en particular usando un alias:

 

SELECT JSON_OBJECT(t.*) AS json_data FROM <Tabla> t;

 

Ejemplo

SELECT JSON_OBJECT(p.*) AS json_data FROM Producto p;

 

 

Lista de Columnas

Es posible utilizar una lista de columnas separadas por coma. Los nombres de los elementos mantienen las mayúsculas / minúsculas definidas en la lista:

 

SELECT JSON_OBJECT(columnaA, ColumnaB) AS json_data

FROM <Tabla> t;

 

 

Ejemplo

 

SELECT JSON_OBJECT(Nombre, Precio) AS json_data

FROM Producto p;

 

 

 

Sintaxis KEY ... VALUE simplificada

No es necesario utilizar la sintaxis ‘KEY … VALUE’, pudiéndose usar directamente “:” para definir los pares de datos:

 

SELECT JSON_OBJECT('ID' : id,

                   'Nombre' : name) AS json_data

FROM persons;

 

Ejemplo

 

SELECT JSON_OBJECT('ID':id,

                   'Producto':nombre) AS json_data_new

FROM Producto p;