No formato de entrada via banco de dados, o mesmo conteúdo de arquivo que seria disponibilizado em um diretório no formato anterior, deve ser inserido em uma tabela pré-definida. Esta tabela pode ser criada em qualquer um dos seguintes Sistemas Gerenciadores de Bancos de Dados (SGBD's):
Microsoft SQL Server 2005;
Microsoft SQL Server 2008;
Microsoft SQL Server 2012;
Microsoft SQL Server 2014;
Microsoft SQL Server 2016;
MySQL 5.1;
Oracle 10g;
Oracle 11g;
Oracle 12c;
IBM DB2 versão 9;
IBM Informix 9.40;
IBM Informix 11.50.
A tabela de entrada de dados deverá possuir, obrigatoriamente, as colunas a seguir:
ID – chave primária sequencial;
DOCUMENTDATA – conteúdo do documento a ser processado;
STATUS – deve ser inserido sempre com o valor ZERO, o que indicará para o sistema que o documento ainda não foi processado;
JOB – O valor inserido nesta coluna deve corresponder com a chave normal ou de eventos do Job (ponto emissor).
DOCUMENTUSER – Campo opcional que permite ao ERP fazer controle de qual usuário disparou a inserção do documento na tabela de entrada;
KIND – Campo obrigatório que determina para o sistema o formato do arquivo inserido na tabela. Este campo pode receber os seguintes valores:
0 – TXT;
1 – XML;
2 – PDF;
3 – Outros.
Importante:
•a tabela de entrada de documentos pode possuir colunas adicionais, para controles do ERP, porém essas alterações sobre a estrutura padrão devem ser reportadas à NDDigital, a qual fará a análise evitando que ocorram problemas como concorrência de banco de dados, entre outros. |
A seguir são listados os scripts de criação da estrutura padrão, nos diferentes SGBD’s suportados:
Nota:
•o nome da tabela, TBDATABASEINPUT, é apenas uma sugestão. |
SGBD MSSQL SERVER 2005 / MSSQL SERVER 2008 / MSSQL SERVER 2012 / MSSQL SERVER 2014 / MSSQL SERVER 2016
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tbdatabaseinput]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[tbdatabaseinput](
[id] [bigint] IDENTITY(1,1) NOT NULL,
[documentdata] [varbinary](max) NOT NULL,
[status] [smallint] NOT NULL,
[job] [varchar](60) NULL,
[documentuser] [varchar](30) NULL,
[kind] [smallint] NOT NULL,
CONSTRAINT [PK_tbdatabaseinput] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id =
OBJECT_ID(N'[dbo].[tbdatabaseinput]') AND name = N'IX_tbdatabaseinput')
CREATE NONCLUSTERED INDEX [IX_tbdatabaseinput] ON [dbo].[tbdatabaseinput]
(
[status] ASC,
[job] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
|
SGBD ORACLE
/
CREATE TABLE NDDCONNECTOR.TBDATABASEINPUT
(
ID NUMBER(20) NOT NULL,
DOCUMENTDATA BLOB NOT NULL,
STATUS NUMBER(5) NOT NULL,
JOB VARCHAR2(60),
DOCUMENTUSER VARCHAR2(30) NULL,
KIND NUMBER(5) NOT NULL,
CONSTRAINT TBDATABASEINPUT_PK PRIMARY KEY(ID) ENABLE
)
/
CREATE INDEX TBDATABASEINPUT_IDX1 ON TBDATABASEINPUT (STATUS, JOB)
/
CREATE SEQUENCE TBDATABASEINPUT_SEQ
START WITH 1
INCREMENT BY 1
MAXVALUE 1.0E28
MINVALUE 1
NOCYCLE
CACHE 20
NOORDER
/
CREATE OR REPLACE TRIGGER "BI_TBDATABASEINPUT" BEFORE INSERT ON TBDATABASEINPUT
FOR EACH ROW
WHEN (new.ID IS NULL) BEGIN
SELECT "TBDATABASEINPUT_SEQ".NEXTVAL INTO :new.ID FROM dual;
END;
/
ALTER TRIGGER "BI_TBDATABASEINPUT" ENABLE;
/
|
SGBD DB2
CREATE TABLE TBDATABASEINPUT (
ID BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH +0
INCREMENT BY +1
MINVALUE +0
MAXVALUE +9223372036854775807
NO CYCLE
NO CACHE
NO ORDER )PRIMARY KEY,
DOCUMENTDATA BLOB NOT NULL,
STATUS INTEGER NOT NULL,
JOB VARCHAR(60),
DOCUMENTUSER VARCHAR(30) NULL,
KIND INTEGER NOT NULL);
COMMIT;
CREATE INDEX "TBDATABASEINPUT_IDX1" ON "TBDATABASEINPUT" ("STATUS","JOB");
|
SGBD IBM INFORMIX
CREATE TABLE TBDATABASEINPUT (
ID SERIAL8,
DOCUMENTDATA BYTE NOT NULL,
STATUS INTEGER NOT NULL,
JOB VARCHAR(60),
DOCUMENTUSER VARCHAR(30),
KIND INTEGER NOT NULL);
CREATE INDEX TBDATABASEINPUT_IDX1 ON TBDATABASEINPUT (STATUS,JOB);
alter table TBDATABASEINPUT modify lock mode (ROW);
|
SGBD MySQL 5.1
CREATE TABLE `tbdatabaseinput` (
`ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`DOCUMENTDATA` MEDIUMBLOB NOT NULL,
`STATUS` tinyint(4) NOT NULL,
`JOB` varchar(30) DEFAULT NULL,
`DOCUMENTUSER` varchar(30) DEFAULT NULL,
`KIND` smallint(6) NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `ID_UNIQUE` (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE INDEX ix_tbdatabaseinput_1 ON tbdatabaseinput(status, job);
|
Voltar
|