Portuguese

Entrada via Banco de Dados

Entrada via Banco de Dados

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;

•Microsoft SQL Server 2017;

•MySQL 5.1;

•Oracle 10g;

•Oracle 11g;

•Oracle 12c;

•IBM DB2 versão 9;

•IBM Informix 9.40;

•IBM Informix 11.50;

•IBM Informix 12.10.

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.

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:

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 /MSSQL SERVER 2017

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);