From dee23524bc8a452f2da45d526d85ebdb190ebc03 Mon Sep 17 00:00:00 2001 From: Simone Palacino Date: Mon, 16 Sep 2019 18:10:27 +0200 Subject: [PATCH] Patch level : 12.0 no-patch Files correlati : f9.exe, f90100.sql Commento : - Corretto check tables se esistono gia' dato che c'era gia' un aggiornamento delle tabelle dell'F9 da parte dell'FP --- src/f9/f90100.cpp | 84 ++++++++------- src/f9/f90100.h | 2 +- src/f9/sql/f90100.sql | 242 ++++++++++++++++++++++-------------------- 3 files changed, 173 insertions(+), 155 deletions(-) diff --git a/src/f9/f90100.cpp b/src/f9/f90100.cpp index df977469a..53c0d9a94 100644 --- a/src/f9/f90100.cpp +++ b/src/f9/f90100.cpp @@ -15,13 +15,14 @@ /* * - Per aggiornare le tabelle f9 aggiungere nella cartella "sql\f9\" il file sql cosi' fatto: * f9xxxx.sql dove xxxx e' il numero zero-filled della versione delle tabelle, che INCREMENTA DI DUE COME CON LE PATCH, IMPORTANTE! - * - Aggiornare la definizione qui sotto di F9_SQL_VERSION mettendo la nuova versione. + * - Aggiornare la definizione qui sotto di SQL_VERSION mettendo la nuova versione. * - Fare patch del file sql e dell'eseguibile f90.exe * - Lanciare il programma per eseguire l'aggiornamento. */ -#define TABMOD_SQL_VERSION "S0" -#define F9_SQL_VERSION 100 // Utilizzo questo per controllare la versione attuale delle tabelle e nel caso aggiornarle +#define TABMOD_TABVER "S0" // Campo per la memorizzazione della versione attuale delle tabelle +#define TAB_BASE_VERSION 100 // Versione base delle tabelle +#define SQL_VERSION 100 // Utilizzo questo per controllare la versione attuale delle tabelle e nel caso aggiornarle SSimple_query& db() { @@ -966,8 +967,8 @@ bool TF9_app::is_doc_xml(const TLocalisamfile& mov) if(chiave_paf(doc, hfatt, bfatt)) { query << "SELECT * FROM PAF0100F WHERE P1_KEYHEADERFATT = '" << hfatt << "' AND P1_KEYBODYFATT = '" << bfatt << "';"; - fp_db().sq_set_exec(query); - return fp_db().sq_items() > 0; + db().sq_set_exec(query); + return db().sq_items() > 0; } return false; } @@ -1245,7 +1246,8 @@ void pulisci_mov() void TF9_app::main_loop() { - check_table(); + if(!check_table()) + fatal_box("Controllo tabelle modulo fallito."); #ifdef DBG // Per sicurezza che non venga inserito in release //pulisci_mov(); #endif @@ -1270,9 +1272,9 @@ bool TF9_app::create_tables() const tabmod.put("CODTAB", "VERSION"); char ver[5] = "0000"; sprintf_s(ver, 5, "%04d", 100); - tabmod.put(TABMOD_SQL_VERSION, ver); - tabmod.write(); // todo: controllare - ok &= tabmod.rewrite() == NOERR; // todo: controllare + tabmod.put(TABMOD_TABVER, ver); + tabmod.write(); // todo: controllare + ok &= tabmod.rewrite() == NOERR; // todo: controllare return ok; } @@ -1297,15 +1299,16 @@ bool TF9_app::aggiorna_tab_f9(int version) const string sql; char ver[5] = "0000"; sprintf_s(ver, 5, "%04d", version); - file << "sql\\f90\\f9" << ver << ".sql"; + TString name; name << "f9" << ver << ".sql"; + file << "sql\\f90\\" << name; std::ifstream fin; fin.open(file); if(ok &= fin.is_open()) { - while (!fin.eof()) + while (!fin.eof() && ok) { - std::string appo_line; // todo: Controllare che si svuota ad ogni ciclo o aggiungere un erase + std::string appo_line; std::getline(fin, appo_line); if (appo_line[0] == '-' && appo_line[1] == '-') // Se è una riga di commento la salto continue; @@ -1315,12 +1318,17 @@ bool TF9_app::aggiorna_tab_f9(int version) const if(end != int(std::string::npos)) { TString query; query << sql.c_str(); - ok &= fp_db().sq_set_exec(query); - ok &= fp_db().sq_commit(); + ok &= db().sq_set_exec(query); + ok &= db().sq_commit(); sql.erase(); } } } + else + { + TString msg; msg << "Impossibile trovare il file di aggiornamento tabelle: " << file; + error_box(msg); + } return ok; } @@ -1331,51 +1339,47 @@ bool TF9_app::check_tab_version() const tabmod.put("MOD", "F9"); tabmod.put("COD", "SQL"); tabmod.put("CODTAB", "VERSION"); + const bool exists = tabmod.read() == NOERR; - if(ok &= tabmod.read() == NOERR) + int version = exists ? real(tabmod.get(TABMOD_TABVER)).integer() : TAB_BASE_VERSION - 2; + if(version < SQL_VERSION) // Controllo la versione { - int version = real(tabmod.get(TABMOD_SQL_VERSION)).integer(); - if(version < F9_SQL_VERSION) // Controllo la versione + for(; version < SQL_VERSION; version += 2) // Effettuo le modifiche per ogni avanzamento di versione { - for(; version <= F9_SQL_VERSION; version += 2) // Effettuo le modifiche per ogni avanzamento di versione + if (ok &= aggiorna_tab_f9(version + 2)) { - if (ok &= aggiorna_tab_f9(version + 2)) + char ver[5] = "0000"; + sprintf_s(ver, 5, "%04d", version + 2); + tabmod.put(TABMOD_TABVER, ver); // Avanzo il contatore della versione in TABMOD + if (!exists) { - char ver[5] = "0000"; - sprintf_s(ver, 5, "%04d", version + 2); - tabmod.put(TABMOD_SQL_VERSION, ver); // Avanzo il contatore della versione in TABMOD - tabmod.rewrite(); + tabmod.zero(); + tabmod.put("MOD", "F9"); + tabmod.put("COD", "SQL"); + tabmod.put("CODTAB", "VERSION"); + tabmod.put(TABMOD_TABVER, ver); // Avanzo il contatore della versione in TABMOD + tabmod.write(); } - else - break; + tabmod.rewrite(); } + else + break; } } + return ok; } -bool TF9_app::check_table() +bool TF9_app::check_table() const { - if (!check_tabelle_f9()) - { - TString msg; - std::ofstream fout; - fout.open("f9checktaberr.txt"); - fout << fp_db().sq_get_text_error(false) << std::endl; - fout.close(); - msg << "Errore controllo database F9: creazione tabelle.\n" << fp_db().sq_get_text_error(false); - fatal_box(msg); - return false; - } - // Se il check tabelle va a buon fine controllo la versione delle tabelle if (!check_tab_version()) { TString msg; std::ofstream fout; fout.open("f9checktaberr.txt"); - fout << fp_db().sq_get_text_error(false) << std::endl; + fout << db().sq_get_text_error(false) << std::endl; fout.close(); - msg << "Errore controllo database F9: aggiornamento tabelle.\n" << fp_db().sq_get_text_error(false); + msg << "! Errore controllo database F9: creazione/aggiornamento tabelle.\n" << db().sq_get_text_error() << "\n" << db().sq_get_string_error(); fatal_box(msg); return false; } diff --git a/src/f9/f90100.h b/src/f9/f90100.h index ada4da4f9..29bbca0d1 100644 --- a/src/f9/f90100.h +++ b/src/f9/f90100.h @@ -142,7 +142,7 @@ public: bool check_tabelle_f9(); // Controllo esistenza delle tabelle e in caso le crea bool aggiorna_tab_f9(int version) const; // Aggiorna modifiche alle tabelle F9 come descritto in cima al file .cpp bool check_tab_version() const; // Controllo della versione e in caso aggiorna le tabelle - bool check_table(); + bool check_table() const; TF9_app() : _estr_msk(nullptr), _msk(nullptr), _mov_escl("", '|'), _tot_movs(0), _ambiente(""), _addr_doc(""), _last_estr_p(0), _last_estr_d(0), _tipodoc_escl('A'), _flagprov_escl('P') { } }; diff --git a/src/f9/sql/f90100.sql b/src/f9/sql/f90100.sql index 7ef34b697..39b055d90 100644 --- a/src/f9/sql/f90100.sql +++ b/src/f9/sql/f90100.sql @@ -1,123 +1,137 @@ -CREATE TABLE F9DRD00K ( - F9RCSOC CHAR(10) NOT NULL DEFAULT '' , - F9RIDES CHAR(18) NOT NULL DEFAULT '' , - F9RFPDE CHAR(1) NOT NULL DEFAULT '' , - F9RDDES CHAR(256) NOT NULL DEFAULT '' , - F9RFTDC CHAR(1) NOT NULL DEFAULT '' , - F9RUESD DATE NOT NULL DEFAULT getdate() , - F9RUESA DATE NOT NULL DEFAULT getdate() , - F9RUTEE CHAR(10) NOT NULL DEFAULT '' , - F9RUHES DATETIME NOT NULL DEFAULT getdate() , - F9RIDAS CHAR(2) NOT NULL DEFAULT '' , - F9RIDWA CHAR(2) NOT NULL DEFAULT '' , - F9RDSIW CHAR(256) NOT NULL DEFAULT '' , - F9RUHIM DATETIME NOT NULL DEFAULT getdate() , - F9RIISO CHAR(1) NOT NULL DEFAULT '' , - F9RUHIS DATETIME NOT NULL DEFAULT getdate() , - F9RSINW CHAR(2) NOT NULL DEFAULT '' , - F9RDSIN CHAR(256) NOT NULL DEFAULT '' , - F9RPCDC CHAR(256) NOT NULL DEFAULT '' , - PRIMARY KEY( F9RCSOC , F9RIDES , F9RFPDE ) ) ; +IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'F9DRD00K') +CREATE TABLE F9DRD00K ( + F9RCSOC CHAR(10) NOT NULL DEFAULT '', + F9RIDES CHAR(18) NOT NULL DEFAULT '', + F9RFPDE CHAR(1) NOT NULL DEFAULT '', + F9RDDES CHAR(256) NOT NULL DEFAULT '', + F9RFTDC CHAR(1) NOT NULL DEFAULT '', + F9RUESD DATE NOT NULL DEFAULT getdate(), + F9RUESA DATE NOT NULL DEFAULT getdate(), + F9RUTEE CHAR(10) NOT NULL DEFAULT '', + F9RUHES DATETIME NOT NULL DEFAULT getdate(), + F9RIDAS CHAR(2) NOT NULL DEFAULT '', + F9RIDWA CHAR(2) NOT NULL DEFAULT '', + F9RDSIW CHAR(256) NOT NULL DEFAULT '', + F9RUHIM DATETIME NOT NULL DEFAULT getdate(), + F9RIISO CHAR(1) NOT NULL DEFAULT '', + F9RUHIS DATETIME NOT NULL DEFAULT getdate(), + F9RSINW CHAR(2) NOT NULL DEFAULT '', + F9RDSIN CHAR(256) NOT NULL DEFAULT '', + F9RPCDC CHAR(256) NOT NULL DEFAULT '', + PRIMARY KEY( F9RCSOC,F9RIDES,F9RFPDE )) +ELSE + SELECT 1 AS EXIST; -CREATE TABLE F9DRT00K ( - F9TCSOC CHAR(10) NOT NULL DEFAULT '' , - F9TCADO CHAR(10) NOT NULL DEFAULT '' , - F9TDDES CHAR(30) NOT NULL DEFAULT '' , - F9TCLDC CHAR(10) NOT NULL DEFAULT '' , - F9TCDD1 CHAR(2) NOT NULL DEFAULT '' , - F9TCSOS CHAR(6) NOT NULL DEFAULT '' , - F9TCCAU CHAR(6) NOT NULL DEFAULT '' , - F9TTCAU CHAR(6) NOT NULL DEFAULT '' , - F9TTMOV CHAR(6) NOT NULL DEFAULT '' , - F9TFCEE CHAR(6) NOT NULL DEFAULT '' , - PRIMARY KEY( F9TCSOC , F9TCADO , F9TCCAU , F9TTCAU , F9TTMOV , F9TFCEE ) ) ; - -CREATE TABLE F9IVA00K ( - F9ICSOC CHAR(10) NOT NULL DEFAULT '' , - F9IIDLA CHAR(18) NOT NULL DEFAULT '' , - F9IFPDE CHAR(1) NOT NULL DEFAULT '' , - F9IAFES CHAR(4) NOT NULL DEFAULT '' , - F9IGIVA CHAR(1) NOT NULL DEFAULT '' , - F9ITPGI CHAR(10) NOT NULL DEFAULT '' , - F9IDXML CHAR(1) NOT NULL DEFAULT '' , - F9ITCFO CHAR(1) NOT NULL DEFAULT '' , - F9ICCFO CHAR(10) NOT NULL DEFAULT '' , - F9IDRSO CHAR(60) NOT NULL DEFAULT '' , - F9IIDFI CHAR(30) NOT NULL DEFAULT '' , - F9IPIVA CHAR(28) NOT NULL DEFAULT '' , - F9ICFIS CHAR(16) NOT NULL DEFAULT '' , - F9ICADO CHAR(10) NOT NULL DEFAULT '' , - F9ICSOS CHAR(6) NOT NULL DEFAULT '' , - F9INDOC CHAR(20) NOT NULL DEFAULT '' , - F9IUDOC DATE NOT NULL DEFAULT getdate() , - F9ISIVA CHAR(10) NOT NULL DEFAULT '' , - F9ICREG CHAR(6) NOT NULL DEFAULT '' , - F9INPRI CHAR(20) NOT NULL DEFAULT '' , - F9IUPRI DATE NOT NULL DEFAULT getdate() , - F9IFOOA CHAR(10) NOT NULL DEFAULT '' , - F9ITROT CHAR(6) NOT NULL DEFAULT '' , - F9INRRO CHAR(20) NOT NULL DEFAULT '' , - F9IURGO DATE NOT NULL DEFAULT getdate() , - F9ICLDF CHAR(10) NOT NULL DEFAULT '' , - F9INMF1 CHAR(100) NOT NULL DEFAULT '' , - F9ICLDN CHAR(10) NOT NULL DEFAULT '' , - F9INMF2 CHAR(100) NOT NULL DEFAULT '' , - F9ICLDA CHAR(10) NOT NULL DEFAULT '' , - F9INMF3 CHAR(100) NOT NULL DEFAULT '' , - F9ICLD4 CHAR(10) NOT NULL DEFAULT '' , - F9INMF4 CHAR(100) NOT NULL DEFAULT '' , - F9ICLD5 CHAR(10) NOT NULL DEFAULT '' , - F9INMF5 CHAR(100) NOT NULL DEFAULT '' , - F9ICLD6 CHAR(10) NOT NULL DEFAULT '' , - F9INMF6 CHAR(100) NOT NULL DEFAULT '' , - F9ICLD7 CHAR(10) NOT NULL DEFAULT '' , - F9INMF7 CHAR(100) NOT NULL DEFAULT '' , - F9ICLD8 CHAR(10) NOT NULL DEFAULT '' , - F9INMF8 CHAR(100) NOT NULL DEFAULT '' , - F9ICLD9 CHAR(10) NOT NULL DEFAULT '' , - F9INMF9 CHAR(100) NOT NULL DEFAULT '' , - F9ICL10 CHAR(10) NOT NULL DEFAULT '' , - F9INM10 CHAR(100) NOT NULL DEFAULT '' , - F9IUTEE CHAR(10) NOT NULL DEFAULT '' , - F9IUHEL DATETIME NOT NULL DEFAULT getdate() , - F9IUHEW DATETIME NOT NULL DEFAULT getdate() , - F9IDDES CHAR(30) NOT NULL DEFAULT '' , - F9ITPRT CHAR(2) NOT NULL DEFAULT '' , - F9IAPRT NUMERIC(4, 0) NOT NULL DEFAULT 0 , - F9INPRT NUMERIC(10, 0) NOT NULL DEFAULT 0 , - F9IURIC DATETIME NOT NULL DEFAULT getdate() , - PRIMARY KEY( F9ICSOC , F9IIDLA , F9IFPDE , F9ISIVA , F9ICREG , F9INPRI , F9IUPRI , F9ITPGI ) ) ; - -CREATE TABLE F9PWA00K ( - F9PCSOC CHAR(10) NOT NULL DEFAULT '' , - F9PCDFN CHAR(2) NOT NULL DEFAULT '' , - F9PCDNT CHAR(2) NOT NULL DEFAULT '' , - F9PCDA1 CHAR(2) NOT NULL DEFAULT '' , - F9PCDA2 CHAR(2) NOT NULL DEFAULT '' , - F9PCDA3 CHAR(2) NOT NULL DEFAULT '' , - F9PCDA4 CHAR(2) NOT NULL DEFAULT '' , - F9PCDA5 CHAR(2) NOT NULL DEFAULT '' , - F9PCDA6 CHAR(2) NOT NULL DEFAULT '' , - F9PCDA7 CHAR(2) NOT NULL DEFAULT '' , - F9PCDA8 CHAR(2) NOT NULL DEFAULT '' , - F9PPCDC CHAR(256) NOT NULL DEFAULT '' , - PRIMARY KEY( F9PCSOC ) ) ; - +IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'F9DRT00K') +CREATE TABLE F9DRT00K ( + F9TCSOC CHAR(10) NOT NULL DEFAULT '', + F9TCADO CHAR(10) NOT NULL DEFAULT '', + F9TDDES CHAR(30) NOT NULL DEFAULT '', + F9TCLDC CHAR(10) NOT NULL DEFAULT '', + F9TCDD1 CHAR(2) NOT NULL DEFAULT '', + F9TCSOS CHAR(6) NOT NULL DEFAULT '', + F9TCCAU CHAR(6) NOT NULL DEFAULT '', + F9TTCAU CHAR(6) NOT NULL DEFAULT '', + F9TTMOV CHAR(6) NOT NULL DEFAULT '', + F9TFCEE CHAR(6) NOT NULL DEFAULT '', + PRIMARY KEY( F9TCSOC,F9TCADO,F9TCCAU,F9TTCAU,F9TTMOV,F9TFCEE )) +ELSE + SELECT 1 AS EXIST; + +IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'F9IVA00K') +CREATE TABLE F9IVA00K ( + F9ICSOC CHAR(10) NOT NULL DEFAULT '', + F9IIDLA CHAR(18) NOT NULL DEFAULT '', + F9IFPDE CHAR(1) NOT NULL DEFAULT '', + F9IAFES CHAR(4) NOT NULL DEFAULT '', + F9IGIVA CHAR(1) NOT NULL DEFAULT '', + F9ITPGI CHAR(10) NOT NULL DEFAULT '', + F9IDXML CHAR(1) NOT NULL DEFAULT '', + F9ITCFO CHAR(1) NOT NULL DEFAULT '', + F9ICCFO CHAR(10) NOT NULL DEFAULT '', + F9IDRSO CHAR(60) NOT NULL DEFAULT '', + F9IIDFI CHAR(30) NOT NULL DEFAULT '', + F9IPIVA CHAR(28) NOT NULL DEFAULT '', + F9ICFIS CHAR(16) NOT NULL DEFAULT '', + F9ICADO CHAR(10) NOT NULL DEFAULT '', + F9ICSOS CHAR(6) NOT NULL DEFAULT '', + F9INDOC CHAR(20) NOT NULL DEFAULT '', + F9IUDOC DATE NOT NULL DEFAULT getdate(), + F9ISIVA CHAR(10) NOT NULL DEFAULT '', + F9ICREG CHAR(6) NOT NULL DEFAULT '', + F9INPRI CHAR(20) NOT NULL DEFAULT '', + F9IUPRI DATE NOT NULL DEFAULT getdate(), + F9IFOOA CHAR(10) NOT NULL DEFAULT '', + F9ITROT CHAR(6) NOT NULL DEFAULT '', + F9INRRO CHAR(20) NOT NULL DEFAULT '', + F9IURGO DATE NOT NULL DEFAULT getdate(), + F9ICLDF CHAR(10) NOT NULL DEFAULT '', + F9INMF1 CHAR(100) NOT NULL DEFAULT '', + F9ICLDN CHAR(10) NOT NULL DEFAULT '', + F9INMF2 CHAR(100) NOT NULL DEFAULT '', + F9ICLDA CHAR(10) NOT NULL DEFAULT '', + F9INMF3 CHAR(100) NOT NULL DEFAULT '', + F9ICLD4 CHAR(10) NOT NULL DEFAULT '', + F9INMF4 CHAR(100) NOT NULL DEFAULT '', + F9ICLD5 CHAR(10) NOT NULL DEFAULT '', + F9INMF5 CHAR(100) NOT NULL DEFAULT '', + F9ICLD6 CHAR(10) NOT NULL DEFAULT '', + F9INMF6 CHAR(100) NOT NULL DEFAULT '', + F9ICLD7 CHAR(10) NOT NULL DEFAULT '', + F9INMF7 CHAR(100) NOT NULL DEFAULT '', + F9ICLD8 CHAR(10) NOT NULL DEFAULT '', + F9INMF8 CHAR(100) NOT NULL DEFAULT '', + F9ICLD9 CHAR(10) NOT NULL DEFAULT '', + F9INMF9 CHAR(100) NOT NULL DEFAULT '', + F9ICL10 CHAR(10) NOT NULL DEFAULT '', + F9INM10 CHAR(100) NOT NULL DEFAULT '', + F9IUTEE CHAR(10) NOT NULL DEFAULT '', + F9IUHEL DATETIME NOT NULL DEFAULT getdate(), + F9IUHEW DATETIME NOT NULL DEFAULT getdate(), + F9IDDES CHAR(30) NOT NULL DEFAULT '', + F9ITPRT CHAR(2) NOT NULL DEFAULT '', + F9IAPRT NUMERIC(4, 0) NOT NULL DEFAULT 0, + F9INPRT NUMERIC(10, 0) NOT NULL DEFAULT 0, + F9IURIC DATETIME NOT NULL DEFAULT getdate(), + PRIMARY KEY( F9ICSOC,F9IIDLA,F9IFPDE,F9ISIVA,F9ICREG,F9INPRI,F9IUPRI,F9ITPGI )) +ELSE + SELECT 1 AS EXIST; + +IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'F9PWA00K') +CREATE TABLE F9PWA00K ( + F9PCSOC CHAR(10) NOT NULL DEFAULT '', + F9PCDFN CHAR(2) NOT NULL DEFAULT '', + F9PCDNT CHAR(2) NOT NULL DEFAULT '', + F9PCDA1 CHAR(2) NOT NULL DEFAULT '', + F9PCDA2 CHAR(2) NOT NULL DEFAULT '', + F9PCDA3 CHAR(2) NOT NULL DEFAULT '', + F9PCDA4 CHAR(2) NOT NULL DEFAULT '', + F9PCDA5 CHAR(2) NOT NULL DEFAULT '', + F9PCDA6 CHAR(2) NOT NULL DEFAULT '', + F9PCDA7 CHAR(2) NOT NULL DEFAULT '', + F9PCDA8 CHAR(2) NOT NULL DEFAULT '', + F9PPCDC CHAR(256) NOT NULL DEFAULT '', + PRIMARY KEY( F9PCSOC )) +ELSE + SELECT 1 AS EXIST; + +IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'F9ERROR') CREATE TABLE F9ERROR( - IDESTR CHAR(18) NOT NULL, - NUMREG NUMERIC(7,0) NOT NULL, - DATAREG DATE NOT NULL, - DATADOC DATE NOT NULL, - CODCAUS VARCHAR(3) NOT NULL, - MESELIQ NUMERIC(2,0), - NUMDOC VARCHAR(50) NOT NULL, + IDESTR CHAR(18) NOT NULL, + NUMREG NUMERIC(7,0) NOT NULL, + DATAREG DATE NOT NULL, + DATADOC DATE NOT NULL, + CODCAUS VARCHAR(3) NOT NULL, + MESELIQ NUMERIC(2,0), + NUMDOC VARCHAR(50) NOT NULL, IMPTOTDOC NUMERIC(18,3) NOT NULL, FORN NUMERIC(6,0) NOT NULL, RAGSOC VARCHAR(50), - PROTIVA VARCHAR(10) NOT NULL, + PROTIVA VARCHAR(10) NOT NULL, DESCR VARCHAR(50), ESCLUDI CHAR(1), ESCLUSO CHAR(2), DESCRERR VARCHAR(110), - PRIMARY KEY(IDESTR, NUMREG) -); \ No newline at end of file + PRIMARY KEY(IDESTR, NUMREG)) +ELSE + SELECT 1 AS EXIST; \ No newline at end of file