Esta sección esta dedicada a los procesos de actualziación de script en los clientes multiempresa. Esta documentación aplica para el cliente Fosemed y aquellos que apliquen configuración multiempresa en la versión Oracle Dabatabse versión 11gR2 y posteriores donde el cliente se identifique por contexto en vistas.
Implementar un modelo de vistas que extraigan infromación de tablas aplicando un filtrado por contexto.
A continuación se define el proceso de actualización según los siguientes tipos:
Toda estructura DDL menos la modificación/agregacion de columnas en tablas se actualizan según las Reglas del modelo
Toda estructura DML (Insert,Update,Select,Delete) se ejecuta igual que los modelos uniempresa, sin embargo se debe ejecutar previamente el contexto según el siguiente script y empresa a afectar.
EXECUTE sicof.pkg_ctx_sicof.sp_nombre_variable('CODIGO_MEMPRESA','[Código de la Empresa]');
Las actualización de tablas requiere que se ejecuten los siguientes pasos:
Se comparte el siguiente ejemplo de una actualización real del módulo de presupuesto.
--============================================================================== -- Fecha: 3:27 p. m. domingo, 24 de julio de 2022 - carlos.torres@ada.co -- Paso 1: Crear las columnas en la tabla --============================================================================== ALTER TABLE PRESUP02.FE_TIPO_FACTURA ADD (FECHA_FINAL_RESOLUCION DATE); ALTER TABLE PRESUP02.FE_TIPO_FACTURA ADD (CLAVE_TECNICA VARCHAR2(256)); --============================================================================== -- Fecha: 3:27 p. m. domingo, 24 de julio de 2022 - carlos.torres@ada.co -- Paso 2: Ejecutar el script que genera un script de la vista actualizada de la tabla --============================================================================== SELECT 'CREATE OR REPLACE FORCE VIEW ' || REPLACE(X.OWNER, '02', '01') || '.' || X.TABLE_NAME || ' AS SELECT * ' || 'FROM ' || X.OWNER || '.' || X.TABLE_NAME || ' T ' || 'WHERE t.codigo_mempresa IN (DECODE (SYS_CONTEXT (''CTX_SICOF'', ''CODIGO_MEMPRESA''),''9999999999'', ''-1'', SYS_CONTEXT (''CTX_SICOF'', ''CODIGO_MEMPRESA'')),''9999999999'') OR SYS_CONTEXT (''CTX_SICOF'', ''CODIGO_MEMPRESA'') = ''0'';' AS NEW_SYNTAX_SQL FROM SYS.ALL_ALL_TABLES X WHERE X.OWNER = 'PRESUP02'--aqui va el esquema de la tabla AND X.TABLE_NAME = 'FE_TIPO_FACTURA ';--Aqui va el nombre de la tabla --============================================================================== -- Fecha: 3:28 p. m. domingo, 24 de julio de 2022 - carlos.torres@ada.co -- Paso 3: Ejecutar el script de la vista actualizada contenido en la columna NEW_SYNTAX_SQL -- del paso 2 --============================================================================== CREATE OR REPLACE FORCE VIEW PRESUP01.FE_TIPO_FACTURA AS SELECT * FROM PRESUP02.FE_TIPO_FACTURA T WHERE t.codigo_mempresa IN (DECODE (SYS_CONTEXT ('CTX_SICOF', 'CODIGO_MEMPRESA'), '9999999999', '-1', SYS_CONTEXT ('CTX_SICOF', 'CODIGO_MEMPRESA')), '9999999999') OR SYS_CONTEXT ('CTX_SICOF', 'CODIGO_MEMPRESA') = '0';