En la última parte del tutorial, Mover datos de forma selectiva entre tablas en memoria y tablas extendidas, creamos una transacción manual queINSERT
«Y»DELETE
«Declaraciones como una operación atómica para transferir los datos entre una memoria y una tabla extendida. Ahora vamos a ir un paso más allá y usaremos un procedimiento almacenado para ejecutar las declaraciones requeridas para transferir datos para 2 tablas relacionadas como una sola transacción. un procedimiento almacenado simplifica el proceso de transferencia de datos y también asegura que todo el proceso de migración para el envío y eliminación se lleve a cabo de manera consistente.
Ahora creará un procedimiento almacenado para transferir datos de más de un año, desde las tablas de memoria a las tablas de la capa dinámica. El es Migrate_Aged_Orders()
el procedimiento almacenado transfiere datos históricos de la memoria ORDERS_CS
y LINEITEM_CS
tablas a las tablas de la capa dinámica ORDERS_DT
y LINEITEM_DT
respectivamente. Copie y pegue el siguiente script en una consola SQL. Luego presione el botón Ejecutar para crear el procedimiento y verificar su correcta ejecución.
CREATE PROCEDURE "TPCH"."Migrate_Aged_Orders" () AS
BEGIN
DECLARE varAgedDate DATE := ADD_YEARS(CURRENT_DATE, -1);
INSERT INTO "TPCH"."ORDERS_DT"
( SELECT * FROM "TPCH"."ORDERS_CS"
WHERE "TPCH"."ORDERS_CS"."O_ORDERDATE" < :varAgedDate );
INSERT INTO "TPCH"."LINEITEM_DT"
SELECT "LINEITEM_CS".* FROM "TPCH"."LINEITEM_CS", "TPCH"."ORDERS_CS"
WHERE "TPCH"."ORDERS_CS"."O_ORDERDATE" < :varAgedDate
AND "LINEITEM_CS"."L_ORDERKEY" = "TPCH"."ORDERS_CS"."O_ORDERKEY";
DELETE FROM "TPCH"."LINEITEM_CS"
WHERE "TPCH"."LINEITEM_CS"."L_ORDERKEY" IN
( SELECT "TPCH"."LINEITEM_CS"."L_ORDERKEY" FROM "TPCH"."LINEITEM_CS", "TPCH"."ORDERS_CS"
WHERE "TPCH"."ORDERS_CS"."O_ORDERDATE" < :varAgedDate
AND "LINEITEM_CS"."L_ORDERKEY" = "TPCH"."ORDERS_CS"."O_ORDERKEY" );
DELETE FROM "TPCH"."ORDERS_CS"
WHERE "TPCH"."ORDERS_CS"."O_ORDERDATE" < :varAgedDate;
END;
La declaracion «
varAgedDate
”Asegura desde el principio que todas las declaraciones de modificación de datos se refieren al mismo valor de fecha y no cambian al ejecutar el procedimiento almacenado. De lo contrario, la ejecución durante la medianoche puede producir resultados inesperados.
El esINSERT
yDELETE
Las declaraciones se ejecutan en un orden específico para cumplir con la principal relación externa declarada entre la memoriaORDERS_CS
yLINEITEM_CS
mesas.