From 0251860d923730e65d0b4181d53631815c616abb Mon Sep 17 00:00:00 2001 From: KammM Date: Tue, 24 Feb 2026 16:43:48 +0100 Subject: [PATCH] DEX: Work in progress.... --- .../[DD_ECM]-Database/DEX_SQL/Fehlercodes.md | 84 ++ .../DEX_SQL/[FNDEX_GET_NEXT_BATCH_ID].sql | Bin 0 -> 5088 bytes .../[FNDEX_GET_NEXT_EXPORT_NUMBER].sql | 318 +++++ .../DEX_SQL/[PRDEX_CHECK_SYSTEM].sql | Bin 0 -> 38556 bytes .../DEX_SQL/[PRDEX_CLEAN_UP].sql | Bin 0 -> 87316 bytes .../DEX_SQL/[PRDEX_GET_INPUT].sql | 1032 ++++++++++++++ .../DEX_SQL/[PRDEX_GET_INPUT_CONTENT].sql | 593 +++++++++ .../DEX_SQL/[PRDEX_REGISTER_PROCESS].sql | Bin 0 -> 33728 bytes .../DEX_SQL/[PRDEX_RUN_MAINPROCESSING].sql | 601 +++++++++ .../DEX_SQL/[PRDEX_RUN_POSTPROCESSING].sql | 555 ++++++++ .../DEX_SQL/[PRDEX_RUN_PREPROCESSING].sql | Bin 0 -> 69414 bytes .../DEX_SQL/[PRDEX_SET_EXPORT_FILENAME].sql | 101 ++ .../DEX_SQL/[PRDEX_SET_EXPORT_NUMBER].sql | Bin 0 -> 66130 bytes .../DEX_SQL/[PRDEX_SET_QUERY].sql | Bin 0 -> 55220 bytes .../[PRDEX_START_PROFILE_EXECUTION].sql | Bin 0 -> 117762 bytes .../DEX_SQL/[PRDEX_TEST_DYNAMIC_SQL].sql | 67 + .../DEX_SQL/[PRDEX_WRITE_FILE].sql | 417 ++++++ .../DEX_SQL/[PRDEX_WRITE_LOG].sql | 139 ++ .../DEX_SQL/[PRDEX_WRITE_OUTPUT].sql | 574 ++++++++ .../[DD_ECM]-Database/DEX_SQL/[START-DEX].sql | 129 ++ .../DEX_SQL/[TBDEX_CFG_OUT_DB].sql | 46 + .../DEX_SQL/[TBDEX_CFG_OUT_FILE].sql | 90 ++ .../DEX_SQL/[TBDEX_CFG_OUT_STRUCTURE].sql | 67 + .../DEX_SQL/[TBDEX_CFG_PROFILE].sql | 66 + .../DEX_SQL/[TBDEX_CFG_RESOURCES].sql | 73 + .../[DD_ECM]-Database/DEX_SQL/[TBDEX_IN].sql | 48 + .../[DD_ECM]-Database/DEX_SQL/[TBDEX_OUT].sql | 50 + .../DEX_SQL/[TBDEX_OUT_REFERENCES].sql | 52 + .../DEX_SQL/[TBDEX_RUN_LOG].sql | 75 ++ .../DEX_SQL/[TBDEX_RUN_NUMBER_RANGE].sql | 52 + .../DEX_SQL/[TBDEX_RUN_PROFILE].sql | 32 + .../DEX_SQL/[TBDEX_TMP_PROCESS].sql | 46 + .../[TBDEX_TMP_PROCESS_REFERENCES].sql | 48 + .../DEX_SQL/[TBDEX_TMP_QUERY].sql | 37 + .../[DD_ECM]-Database/DEX_SQL/[VWDEX_OUT].sql | 58 + .../DEX_SQL/[VWDEX_PROFILE].sql | 32 + .../DEX_SQL/[VWDEX_RESOURCES].sql | 22 + .../[PRDD_GET_DATABASE_OBJECT].sql | 1184 +++++++++++++++++ 38 files changed, 6688 insertions(+) create mode 100644 current/[DD_ECM]-Database/DEX_SQL/Fehlercodes.md create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[FNDEX_GET_NEXT_BATCH_ID].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[FNDEX_GET_NEXT_EXPORT_NUMBER].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[PRDEX_CHECK_SYSTEM].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[PRDEX_CLEAN_UP].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[PRDEX_GET_INPUT].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[PRDEX_GET_INPUT_CONTENT].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[PRDEX_REGISTER_PROCESS].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[PRDEX_RUN_MAINPROCESSING].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[PRDEX_RUN_POSTPROCESSING].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[PRDEX_RUN_PREPROCESSING].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[PRDEX_SET_EXPORT_FILENAME].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[PRDEX_SET_EXPORT_NUMBER].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[PRDEX_SET_QUERY].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[PRDEX_START_PROFILE_EXECUTION].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[PRDEX_TEST_DYNAMIC_SQL].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[PRDEX_WRITE_FILE].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[PRDEX_WRITE_LOG].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[PRDEX_WRITE_OUTPUT].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[START-DEX].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[TBDEX_CFG_OUT_DB].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[TBDEX_CFG_OUT_FILE].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[TBDEX_CFG_OUT_STRUCTURE].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[TBDEX_CFG_PROFILE].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[TBDEX_CFG_RESOURCES].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[TBDEX_IN].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[TBDEX_OUT].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[TBDEX_OUT_REFERENCES].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[TBDEX_RUN_LOG].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[TBDEX_RUN_NUMBER_RANGE].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[TBDEX_RUN_PROFILE].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[TBDEX_TMP_PROCESS].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[TBDEX_TMP_PROCESS_REFERENCES].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[TBDEX_TMP_QUERY].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[VWDEX_OUT].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[VWDEX_PROFILE].sql create mode 100644 current/[DD_ECM]-Database/DEX_SQL/[VWDEX_RESOURCES].sql create mode 100644 current/[DD_SYS]-Database/[PRDD_GET_DATABASE_OBJECT]/[PRDD_GET_DATABASE_OBJECT].sql diff --git a/current/[DD_ECM]-Database/DEX_SQL/Fehlercodes.md b/current/[DD_ECM]-Database/DEX_SQL/Fehlercodes.md new file mode 100644 index 0000000..14fe5a7 --- /dev/null +++ b/current/[DD_ECM]-Database/DEX_SQL/Fehlercodes.md @@ -0,0 +1,84 @@ +# Fehlercodes DEX + +Diese Datei beschreibt die aktuell im Quelltext verwendeten Fehlercodes des DEX-Moduls. +Stand der Analyse: 24.02.2026. + +## Aktive Fehlercodes (im SQL-Code gefunden) + +| Fehlercode | Quelle(n) | Bedeutung / Hinweis | +|---:|---|---| +| 50000 | Mehrere Prozeduren (CATCH-Fallback) | Allgemeiner Fallback-Fehler (`CASE ... ELSE 50000`). Details stehen in `ERROR_MESSAGE()` und im Log. | +| 50001 | `PRDEX_GET_INPUT`, `PRDEX_GET_INPUT_CONTENT`, `PRDEX_WRITE_OUTPUT` | Ungültige Query (z. B. zu kurz, < 15 Zeichen) bzw. fehlerhafte Query-Konfiguration. | +| 50002 | `PRDEX_GET_INPUT` | Keine verarbeitbaren Daten gefunden (ggf. bereits verarbeitet/exportiert). | +| 50003 | `PRDEX_CHECK_SYSTEM` | Keine gültige Modul-Lizenz gefunden. | +| 50004 | `PRDEX_START_PROFILE_EXECUTION` | Ungültige Profil-/Laufzeitkonfiguration (`@PROFILE_NAME`, `@MANDANTOR`, `@EXPORT_TYPE`, `@LANGUAGE`, `@LOG_LEVEL`). | +| 50005 | `PRDEX_SET_QUERY` | Keine ausreichenden Datenzeilen in `TBDEX_TMP_QUERY` gefunden. | +| 50006 | `PRDEX_RUN_MAINPROCESSING` | Temporäre Content-Tabelle konnte nicht erstellt werden. | +| 50007 | `PRDEX_GET_INPUT_CONTENT` | Unzureichende Daten in `TBDEX_TMP_PROCESS_REFERENCES` und/oder `TBDEX_TMP_QUERY`. | +| 50008 | `PRDEX_REGISTER_PROCESS` | Prozess ist bereits registriert (Duplicate). | +| 50010 | `PRDEX_RUN_MAINPROCESSING`, `PRDEX_START_PROFILE_EXECUTION` | Inkonsistenter/vermisster Verarbeitungszustand (z. B. fehlende Prozessreferenzen bzw. ungültige TMP-Tabellen-Konfiguration). | +| 50012 | `PRDEX_CHECK_SYSTEM` | SQL-Server-Version zu alt / Mindestversion nicht erfüllt. | +| 50013 | `PRDEX_CHECK_SYSTEM` | Fehlende DB-Berechtigung (`CONTROL`) für den ausführenden User. | +| 50014 | `PRDEX_CHECK_SYSTEM` | Erforderliche DEX-Objekte (Tabellen/Views/Prozeduren/Funktionen) fehlen. | +| 50015 | `PRDEX_WRITE_LOG` | Logging-Zieltabelle nicht vorhanden oder nicht zugreifbar. | +| 50016 | `PRDEX_START_PROFILE_EXECUTION` | Profil ist offline oder nicht vorhanden. | +| 50017 | `PRDEX_RUN_PREPROCESSING` | Fehler in der Preprocessing-Ausführung. | +| 50018 | `PRDEX_RUN_POSTPROCESSING` | Fehler in der Postprocessing-Ausführung. | +| 50019 | `PRDEX_SET_EXPORT_NUMBER` | Kein gültiger Nummernkreis gefunden (Erstellversuch wird eingeleitet). | +| 50020 | `PRDEX_SET_EXPORT_NUMBER` | Nummernkreis konnte nicht gültig ermittelt/angelegt werden. | +| 50021 | `PRDEX_SET_EXPORT_NUMBER` | Gefundener Nummernkreis ist inaktiv. | +| 50022 | `PRDEX_RUN_MAINPROCESSING` | Export-Spaltenkonfiguration (`TBDEX_CFG_OUT_STRUCTURE`) unzureichend/ungültig. | +| 50023 | `PRDEX_START_PROFILE_EXECUTION` | Ungültige `BATCH_ID` (Mindestlänge nicht erreicht). | +| 50024 | `PRDEX_REGISTER_PROCESS` | Prozess ist bereits in `TBDEX_TMP_PROCESS_REFERENCES` registriert (Duplicate). | +| 50025 | `PRDEX_SET_EXPORT_NUMBER` | Prozesszeile in `TBDEX_TMP_PROCESS` fehlt. | +| 50026 | `PRDEX_SET_EXPORT_NUMBER` | Prozessreferenzen in `TBDEX_TMP_PROCESS_REFERENCES` fehlen. | +| 50027 | `PRDEX_SET_EXPORT_NUMBER` | Nummernkreis-Lock konnte nicht stabil erreicht werden (Retry/Timeout-Szenario). | +| 50028 | `PRDEX_SET_EXPORT_NUMBER` | Nummernkreis konnte nicht gesperrt werden. | +| 50029 | `PRDEX_REGISTER_PROCESS` | Nach Insert ist die erwartete Einzelzeile in `TBDEX_TMP_PROCESS` nicht vorhanden. | +| 50051 | `PRDEX_GET_INPUT` | Unsicherer Query-Inhalt erkannt (unaufgelöste Placeholder oder verbotene SQL-Muster). | +| 50052 | `PRDEX_SET_QUERY` | Unsicherer Query-Inhalt erkannt (unaufgelöste Placeholder oder verbotene SQL-Muster). | +| 50054 | `PRDEX_WRITE_OUTPUT` | Unsicherer Query-Inhalt erkannt (unaufgelöste Placeholder oder verbotene SQL-Muster). | +| 50055 | `PRDEX_RUN_PREPROCESSING` | Unsicherer Query-Inhalt erkannt (unaufgelöste Placeholder oder verbotene SQL-Muster). | +| 50056 | `PRDEX_RUN_POSTPROCESSING` | Unsicherer Query-Inhalt erkannt (unaufgelöste Placeholder oder verbotene SQL-Muster). | +| 50057 | `PRDEX_RUN_MAINPROCESSING` | Unsicherer/inkonsistenter dynamischer Query-Inhalt oder Temp-Target-Konfiguration. | +| 50058 | `PRDEX_WRITE_OUTPUT` | `EXPORT_NUMBER`-Mapping für Output-Referenzen konnte nicht aufgelöst werden. | + +## Empfohlene Sofortmaßnahme je Fehlercode + +| Fehlercode | Empfohlene Sofortmaßnahme (erste 5–10 Minuten) | +|---:|---| +| 50000 | Letzten `ERROR_MESSAGE()`-Eintrag und `TBDEX_RUN_LOG` für `PROFILE_ID`/`BATCH_ID` prüfen; danach auf den ersten fachlichen Code zurückverfolgen. | +| 50001 | Verwendete Query (`START`/`MAIN`/`END`) und Platzhalterauflösung prüfen; Konfiguration in `TBDEX_CFG_RESOURCES` und direkte Querylänge validieren. | +| 50002 | Prüfen, ob Input bereits verarbeitet wurde (`VWDEX_OUT`) oder Startquery keine Daten liefert; Testweise Startquery separat ausführen. | +| 50003 | Lizenzdaten in `TBDD_MODULES` für DEX (`SHORT_NAME`) und `ACTIVE`/`LICENSE` kontrollieren. | +| 50004 | Profilstammdaten in `TBDEX_CFG_PROFILE` auf Pflichtfelder und konsistente Werte prüfen. | +| 50005 | Inhalt in `TBDEX_TMP_QUERY` für aktuellen Batch prüfen (erzeugte Main-Query vorhanden?). | +| 50006 | Generiertes `CREATE TABLE`-Statement aus `TBDEX_TMP_PROCESS` prüfen und manuell gegen Berechtigungen/Objektnamen testen. | +| 50007 | Für den Batch prüfen, ob `TBDEX_TMP_PROCESS_REFERENCES` und `TBDEX_TMP_QUERY` befüllt sind und gleiche Batch-/Profile-Filter verwenden. | +| 50008 | Doppelte Batch-Registrierung in `TBDEX_TMP_PROCESS`/`TBDEX_TMP_PROCESS_REFERENCES` prüfen; ggf. mit `PRDEX_CLEAN_UP` bereinigen. | +| 50010 | Prozesskette bis Mainprocessing prüfen: fehlen Prozessreferenzen oder TMP-Tabellenmetadaten im aktuellen Batch? | +| 50012 | SQL-Server-Version gegen Mindestversion abgleichen; ggf. auf unterstützte Instanz wechseln. | +| 50013 | Ausführenden DB-User prüfen und fehlende `CONTROL`-Rechte auf die Ziel-DB setzen. | +| 50014 | Fehlende DEX-Objekte gemäß Systemcheck nachdeployen (Tabellen, Views, Prozeduren, Funktionen). | +| 50015 | Existenz/Zugriff auf `TBDEX_RUN_LOG` prüfen; Rechte und Schema (`dbo`) verifizieren. | +| 50016 | Profilstatus in `VWDEX_PROFILE`/`TBDEX_CFG_PROFILE` prüfen (`ACTIVE=1`). | +| 50017 | Preprocessing-Query aus `TBDEX_CFG_RESOURCES` isoliert ausführen und auf SQL-/Placeholder-Fehler prüfen. | +| 50018 | Postprocessing-Query aus `TBDEX_CFG_RESOURCES` isoliert ausführen und auf SQL-/Placeholder-Fehler prüfen. | +| 50019 | `TBDEX_RUN_NUMBER_RANGE` auf passenden aktiven Satz für Profil/Schema/Datum prüfen. | +| 50020 | Anlage-/Ermittlungspfad des Nummernkreises prüfen; Konflikte mit Parallelprozessen ausschließen. | +| 50021 | Nummernkreis aktivieren (`ACTIVE=1`) oder korrektes `EXPORT_NUMBER_SCHEMA` im Profil setzen. | +| 50022 | Exportspalten-Setup in `TBDEX_CFG_OUT_STRUCTURE` auf Vollständigkeit (`PATH_OR_COLUMN`, `DATA_TYPE`, `SEQUENCE`) prüfen. | +| 50023 | Batch-ID-Quelle prüfen (`FNDEX_GET_NEXT_BATCH_ID` bzw. Inputparameter), Mindestlänge sicherstellen. | +| 50024 | Doppelte Referenzregistrierung im Batch prüfen; alte Restdaten in TMP-Tabellen entfernen. | +| 50025 | Prüfen, ob `PRDEX_REGISTER_PROCESS` erfolgreich lief und `TBDEX_TMP_PROCESS`-Satz für Batch vorhanden ist. | +| 50026 | Prüfen, ob `PRDEX_GET_INPUT` Referenzen für den Batch in `TBDEX_TMP_PROCESS_REFERENCES` geschrieben hat. | +| 50027 | Lock-/Deadlock-Situation im Nummernkreis prüfen; parallele Läufe für gleiches Profil temporär reduzieren. | +| 50028 | Sperrfehler im Nummernkreis prüfen (offene Transaktionen, Blocker, Deadlocks). | +| 50029 | Nach Insert die Eindeutigkeit/Filter für `TBDEX_TMP_PROCESS` prüfen (Profil+Batch). | +| 50051 | Unsichere/ungeklärte Platzhalter in Startquery prüfen und verbotene SQL-Muster entfernen. | +| 50052 | Unsichere/ungeklärte Platzhalter in Mainquery prüfen und verbotene SQL-Muster entfernen. | +| 50054 | Unsichere/ungeklärte Platzhalter in Endquery prüfen und verbotene SQL-Muster entfernen. | +| 50055 | Preprocessing-Statements auf unaufgelöste Tokens und gesperrte SQL-Muster prüfen. | +| 50056 | Postprocessing-Statements auf unaufgelöste Tokens und gesperrte SQL-Muster prüfen. | +| 50057 | Dynamische Temp-Statements in Mainprocessing vollständig ausgeben und auf Placeholder-/Targetfehler prüfen. | +| 50058 | Mapping `TBDEX_OUT` ↔ `TBDEX_TMP_PROCESS_REFERENCES` für den Batch prüfen (Referenzfelder + `EXPORT_NUMBER`). | \ No newline at end of file diff --git a/current/[DD_ECM]-Database/DEX_SQL/[FNDEX_GET_NEXT_BATCH_ID].sql b/current/[DD_ECM]-Database/DEX_SQL/[FNDEX_GET_NEXT_BATCH_ID].sql new file mode 100644 index 0000000000000000000000000000000000000000..edfb9aa912ee76cce126b977e42f1e003f48d71c GIT binary patch literal 5088 zcmd^?ZExCU6o$`NChb31`x2rxG^E*7ZHojU4#^f^1Db8Bs*1d$WiSzF)<3`Py3d1a zgH5VrQc|h1Y(KWo>wVrH|NGA?>sf4(y|z7$x2zl1vN!gnePK=O_+4vJ^`WaRGE@ ztm$L#0c*()RtMf4d+HcWrwg0e$WCo)LmRV-SdF<}@^#96#Qkqy?ZP#M z@`|@ZJ9B)4Z>i+2bIoi5-;I6e(o$Ww@J*dxnxuV#uG@^Hr^aX}V@m_u{<8PjI0TI= z$DoY=>)5?zo1EXUI)Nf0)}oPj18~)|uo|#x+Mm!Ie2|-B^>LoazKS9;dIs9U?vgC* zavyPQkmplu8-VkTV_CIt(I<{QzP`Y^ZO$#;9q@hTkvqq_E1rf}m0Hs0&9zlLUYkhS zwyHg!`}l(A&AHqdxh*sfp;l~V$pt8FaJ}|O*03~-#2M7Wp@RKmto;L9Q@x*7v?rh- zYm+(%F;td5=d6REa#vo+_i${2R0Vuqa!qqW^ey`-@zRgP-#MFrf3G7f$W&xUU|SgC|k+(maIl^`57G@pFBtC3p1kx z#V*>KoSIC}GW5&yMYJWTj`5)Db4T~Gcc%3P&Lb##NXyTtyCevqb=NPH`e4yTo91iH z-raK+M)241Or9zO%b?dpVwjV`lW@&?U-IwCjPBd-@Ky1wie2(tvpnJ+CVzreR$5p~ zG3;2AY|N^cyHhw3Dndbix)`I{S7s?t-Q zX7esSrk6(KhByXPv8J%j|5Mo}76S6w37B8uJ2TD7p8+v`MlQS;q7oY?Vj3s%dQE#Euditnn}PKe>i z=ZB(}##lT_&&@}xMNYrX^%?DE>);flEjjX@RjKrsUI{|C1BO3(HiTVi;4hOANlrAp zn)1Fp)*KEs(es?n?krEp^z6=3-FxHF_RG>0;+p&=TIj{YhI_teOS9n{mbmR1l5W1qTy5L7|E)aG7-*BhP)n0IrI))+_4gCOGr!XUDlD$ zGwpO$jsM50udz&B`~Jvj2axu7c^Kw&*=I?+5N}caz_~rwSmbvZoMM-u`5u9AOz%_| zXs}X;y5IB1aD0Z29#QQPWBn&;qN*24m(UeHTaJ;|Yh>k`zg^=VzOS(Z%D)qB;7I8z z3-6R!n%WII)Wj!|`c$&N?K4l*v5I0Ne1uYQRtJs}-<7waLx%3Cn)@V|7^R zk-qS6rvJhTk=B3qIaM@cC!(jPuqbp`?P--y>SpRx+TnIs-G4u+{p0eU;mwC?Pv-5z i?%Gcuv8Rl&wWymXdH;E5c;bDU>Dj-8bib7C4*vls$X+`D literal 0 HcmV?d00001 diff --git a/current/[DD_ECM]-Database/DEX_SQL/[FNDEX_GET_NEXT_EXPORT_NUMBER].sql b/current/[DD_ECM]-Database/DEX_SQL/[FNDEX_GET_NEXT_EXPORT_NUMBER].sql new file mode 100644 index 0000000..ddabd8f --- /dev/null +++ b/current/[DD_ECM]-Database/DEX_SQL/[FNDEX_GET_NEXT_EXPORT_NUMBER].sql @@ -0,0 +1,318 @@ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +-- [FNDEX_GET_NEXT_EXPORT_NUMBER] +-- ================================================================= +-- Table function to get next available export number. +-- +-- Returns: table with one row +-- ================================================================= +-- Copyright (c) 2025 by Digital Data GmbH +-- +-- Digital Data GmbH � Ludwig-Rinn-Strasse 16 � D-35452 Heuchelheim +-- Tel.: 0641/202360 � E-Mail: info-flow@digitaldata.works +-- ================================================================= +-- Creation Date / Author: 01.08.2025 / MK +-- Version Date / Editor: 01.08.2025 / MK +-- Version Number: 1.0.0.0 +-- ================================================================= +-- History: +-- 01.08.2025 / MK - First Version + +CREATE OR ALTER FUNCTION [dbo].[FNDEX_GET_NEXT_EXPORT_NUMBER]( + @pPROFILE_ID BIGINT, + @pTEST_MODE BIT, + @pASYNC_MODE BIT, + @pBATCH_ID NVARCHAR(25), + @pBATCH_CREATOR NVARCHAR(50), + @pLANGUAGE NVARCHAR(10), + @pLOG_LEVEL NVARCHAR(25), + @pFORCE BIT, + @pPROFILE_NAME NVARCHAR(50), + @pMANDANTOR NVARCHAR(50), + @pEXPORT_TYPE NVARCHAR(50), + @pEXPORT_NUMBER_SCHEMA NVARCHAR(25), + @pDEFAULT_DATA_SEPARATOR NVARCHAR(10), + @pREFERENCE1 NVARCHAR(150), + @pREFERENCE2 NVARCHAR(150), + @pREFERENCE3 NVARCHAR(150), + @pREFERENCE4 NVARCHAR(150), + @pREFERENCE5 NVARCHAR(150), + @pEXTERNAL_REFERENCE1 NVARCHAR(2000), + @pEXTERNAL_REFERENCE2 NVARCHAR(2000), + @pEXTERNAL_REFERENCE3 NVARCHAR(2000), + @pEXTERNAL_REFERENCE4 NVARCHAR(2000), + @pEXTERNAL_REFERENCE5 NVARCHAR(2000) +) +RETURNS @vTBDEX_RUN_NUMBER_RANGE TABLE ( + [GUID] BIGINT NOT NULL, + [PROFILE_ID] BIGINT NOT NULL, + [ACTIVE] BIT NOT NULL, + [EXPORT_NUMBER_SCHEMA] NVARCHAR(25) NULL, + [EXPORT_NUMBER_COUNTER] BIGINT NULL, + [EXPORT_NUMBER] NVARCHAR(25) NULL, + [NEXT_EXPORT_NUMBER_COUNTER] BIGINT NULL, + [NEXT_EXPORT_NUMBER] NVARCHAR(25) NULL +) +AS +BEGIN + + -- declare new vars because of parameter sniffing + DECLARE @PROFILE_ID BIGINT = @pPROFILE_ID, + @TEST_MODE BIT = @pTEST_MODE, + @ASYNC_MODE BIT = @pASYNC_MODE, + @BATCH_ID NVARCHAR(25) = @pBATCH_ID, + @BATCH_CREATOR NVARCHAR(128) = ISNULL(@pBATCH_CREATOR,OBJECT_NAME(@@PROCID)), + @LANGUAGE NVARCHAR(10) = @pLANGUAGE, + @LOG_LEVEL NVARCHAR(25) = UPPER(ISNULL(@pLOG_LEVEL,'INFO')), + @FORCE BIT = @pFORCE, + @PROFILE_NAME NVARCHAR(50) = @pPROFILE_NAME, + @MANDANTOR NVARCHAR(50) = @pMANDANTOR, + @EXPORT_TYPE NVARCHAR(50) = @pEXPORT_TYPE, + @EXPORT_NUMBER_SCHEMA NVARCHAR(50) = @pEXPORT_NUMBER_SCHEMA, + @DEFAULT_DATA_SEPARATOR NVARCHAR(10) = @pDEFAULT_DATA_SEPARATOR, + @REFERENCE1 NVARCHAR(150) = @pREFERENCE1, + @REFERENCE2 NVARCHAR(150) = @pREFERENCE2, + @REFERENCE3 NVARCHAR(150) = @pREFERENCE3, + @REFERENCE4 NVARCHAR(150) = @pREFERENCE4, + @REFERENCE5 NVARCHAR(150) = @pREFERENCE5, + @EXTERNAL_REFERENCE1 NVARCHAR(2000) = @pEXTERNAL_REFERENCE1, + @EXTERNAL_REFERENCE2 NVARCHAR(2000) = @pEXTERNAL_REFERENCE2, + @EXTERNAL_REFERENCE3 NVARCHAR(2000) = @pEXTERNAL_REFERENCE3, + @EXTERNAL_REFERENCE4 NVARCHAR(2000) = @pEXTERNAL_REFERENCE4, + @EXTERNAL_REFERENCE5 NVARCHAR(2000) = @pEXTERNAL_REFERENCE5; + + -- Special for Calculation + DECLARE @WORK_VALUE NVARCHAR(50) = NULL, + @LoopCounter INT = 1, + @len INT = 0, + @bestStart INT = 0, + @bestLen INT = 0, + @curStart INT = 0, + @curLen INT = 0, + @numericStart INT = 0, + @numericLength INT = 0, + @numericText NVARCHAR(50) = NULL, + @numericValue BIGINT = 0, + @nextNumericString BIGINT = 0, + @nextNumericInt BIGINT = 0, + @nextNumericPadded NVARCHAR(50) = NULL; + + -- declare runtime vars + DECLARE @MY_FUNCTION_NAME NVARCHAR(128) = OBJECT_NAME(@@PROCID); + DECLARE @ACTIVE_FLAG BIT = 1, + @INACTIVE_FLAG BIT = 0, + @GUID BIGINT = NULL, + @ACTIVE BIT = NULL, + @EXPORT_NUMBER_COUNTER BIGINT = NULL, + @EXPORT_NUMBER NVARCHAR(25) = NULL, + @NEXT_EXPORT_NUMBER_COUNTER BIGINT = NULL, + @NEXT_EXPORT_NUMBER NVARCHAR(25) = NULL, + @DATE_TODAY DATE = CONVERT(date, getdate()), + @PLACEHOLDER_NAME NVARCHAR(50) = NULL, + @PLACEHOLDER NVARCHAR(MAX) = NULL, + @PLACEHOLDER_TYPE NVARCHAR(10) = 'CONST'; + + --==================================================-- Work copy from table --===================================================-- + SELECT TOP 1 @GUID = [GUID], + @ACTIVE = [ACTIVE], + @EXPORT_NUMBER_COUNTER = [EXPORT_NUMBER_COUNTER], + @EXPORT_NUMBER = [EXPORT_NUMBER], + @NEXT_EXPORT_NUMBER_COUNTER = NULL, + @NEXT_EXPORT_NUMBER = NULL + FROM [TBDEX_RUN_NUMBER_RANGE] WITH (READPAST) + WHERE [PROFILE_ID] = @PROFILE_ID + AND [ACTIVE] in (@ACTIVE_FLAG,@INACTIVE_FLAG) + AND [EXPORT_NUMBER_SCHEMA] = @EXPORT_NUMBER_SCHEMA + AND (([VALID_FROM] IS NULL AND [VALID_TO] IS NULL) + OR (@DATE_TODAY BETWEEN [VALID_FROM] AND [VALID_TO])) + ORDER BY [GUID] DESC; -- take the newest line if there are multiple + ----------------------------------------------------------------------------------------------------------------------------------- + + + --=============================================-- Exit if there is no valid line --==============================================-- + IF (@GUID IS NULL) BEGIN + RETURN; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + + --==================================================-- Calculate next number --==================================================-- + SET @WORK_VALUE = COALESCE(NULLIF(@EXPORT_NUMBER_SCHEMA,''), NULLIF(@EXPORT_NUMBER,''), ''); + SET @len = LEN(@WORK_VALUE); + + WHILE (@LoopCounter <= @len) BEGIN + IF (SUBSTRING(@WORK_VALUE, @LoopCounter, 1) LIKE '[0-9]') BEGIN + + IF @curLen = 0 BEGIN + SET @curStart = @LoopCounter; + END; + + SET @curLen += 1; + + IF @curLen > @bestLen BEGIN + SET @bestLen = @curLen; + SET @bestStart = @curStart; + END; + + END; ELSE BEGIN + SET @curLen = 0; + END; + + SET @LoopCounter += 1; + + END; + + SET @numericStart = @bestStart; + SET @numericLength = @bestLen; + SET @numericText = CASE + WHEN @numericLength > 0 + THEN SUBSTRING(@WORK_VALUE, @numericStart, @numericLength) + + ELSE '' + END; + SET @numericValue = CASE + WHEN @numericLength > 0 + THEN TRY_CAST(@numericText AS BIGINT) + + ELSE NULL + END; + + -- base current number from counter if available, else from parsed value + IF (TRY_CAST(@EXPORT_NUMBER_COUNTER AS BIGINT) IS NOT NULL) BEGIN + SET @nextNumericInt = TRY_CAST(@EXPORT_NUMBER_COUNTER AS BIGINT); + END ELSE IF (@numericValue IS NOT NULL) BEGIN + SET @nextNumericInt = @numericValue; + END ELSE BEGIN + SET @nextNumericInt = 0; + END; + + SET @nextNumericInt = @nextNumericInt + 1; -- increment + SET @nextNumericString = @nextNumericInt; + + SET @nextNumericPadded = CASE + WHEN @numericLength > 0 + THEN RIGHT(REPLICATE('0', @numericLength) + CAST(@nextNumericInt AS NVARCHAR(50)), @numericLength) + + ELSE CAST(@nextNumericInt AS NVARCHAR(50)) + END; + + IF (@numericLength = 0) BEGIN + SET @NEXT_EXPORT_NUMBER = @WORK_VALUE + @nextNumericPadded; + END ELSE BEGIN + SET @NEXT_EXPORT_NUMBER = STUFF(@WORK_VALUE, @numericStart, @numericLength, @nextNumericPadded); + END; + + SET @NEXT_EXPORT_NUMBER_COUNTER = @nextNumericInt; + ----------------------------------------------------------------------------------------------------------------------------------- + + + --=================================================-- Handle placeholders 1/2 --=================================================-- + SET @EXPORT_NUMBER_SCHEMA = REPLACE(@EXPORT_NUMBER_SCHEMA,'%PROFILE_ID%',ISNULL(@PROFILE_ID,'')); + SET @EXPORT_NUMBER_SCHEMA = REPLACE(@EXPORT_NUMBER_SCHEMA,'%TEST_MODE%',ISNULL(@TEST_MODE,'')); + SET @EXPORT_NUMBER_SCHEMA = REPLACE(@EXPORT_NUMBER_SCHEMA,'%ASYNC_MODE%',ISNULL(@ASYNC_MODE,'')); + SET @EXPORT_NUMBER_SCHEMA = REPLACE(@EXPORT_NUMBER_SCHEMA,'%BATCH_ID%',ISNULL(@BATCH_ID,'')); + SET @EXPORT_NUMBER_SCHEMA = REPLACE(@EXPORT_NUMBER_SCHEMA,'%BATCH_CREATOR%',ISNULL(@BATCH_CREATOR,'')); + SET @EXPORT_NUMBER_SCHEMA = REPLACE(@EXPORT_NUMBER_SCHEMA,'%LANGUAGE%',ISNULL(@LANGUAGE,'')); + SET @EXPORT_NUMBER_SCHEMA = REPLACE(@EXPORT_NUMBER_SCHEMA,'%LOG_LEVEL%',ISNULL(@LOG_LEVEL,'')); + SET @EXPORT_NUMBER_SCHEMA = REPLACE(@EXPORT_NUMBER_SCHEMA,'%FORCE%',ISNULL(@FORCE,'')); + SET @EXPORT_NUMBER_SCHEMA = REPLACE(@EXPORT_NUMBER_SCHEMA,'%MY_PROCEDURE_NAME%',ISNULL(@MY_FUNCTION_NAME,'')); + SET @EXPORT_NUMBER_SCHEMA = REPLACE(@EXPORT_NUMBER_SCHEMA,'%MY_FUNCTION_NAME%',ISNULL(@MY_FUNCTION_NAME,'')); + SET @EXPORT_NUMBER_SCHEMA = REPLACE(@EXPORT_NUMBER_SCHEMA,'%PROFILE_NAME%',ISNULL(@PROFILE_NAME,'')); + SET @EXPORT_NUMBER_SCHEMA = REPLACE(@EXPORT_NUMBER_SCHEMA,'%MANDANTOR%',ISNULL(@MANDANTOR,'')); + SET @EXPORT_NUMBER_SCHEMA = REPLACE(@EXPORT_NUMBER_SCHEMA,'%EXPORT_TYPE%',ISNULL(@EXPORT_TYPE,'')); + SET @EXPORT_NUMBER_SCHEMA = REPLACE(@EXPORT_NUMBER_SCHEMA,'%EXPORT_NUMBER_SCHEMA%',ISNULL(@EXPORT_NUMBER_SCHEMA,'')); + SET @EXPORT_NUMBER_SCHEMA = REPLACE(@EXPORT_NUMBER_SCHEMA,'%DEFAULT_DATA_SEPARATOR%',ISNULL(@DEFAULT_DATA_SEPARATOR,'')); + SET @EXPORT_NUMBER_SCHEMA = REPLACE(@EXPORT_NUMBER_SCHEMA,'%REFERENCE1%',ISNULL(@REFERENCE1,'')); + SET @EXPORT_NUMBER_SCHEMA = REPLACE(@EXPORT_NUMBER_SCHEMA,'%REFERENCE2%',ISNULL(@REFERENCE2,'')); + SET @EXPORT_NUMBER_SCHEMA = REPLACE(@EXPORT_NUMBER_SCHEMA,'%REFERENCE3%',ISNULL(@REFERENCE3,'')); + SET @EXPORT_NUMBER_SCHEMA = REPLACE(@EXPORT_NUMBER_SCHEMA,'%REFERENCE4%',ISNULL(@REFERENCE4,'')); + SET @EXPORT_NUMBER_SCHEMA = REPLACE(@EXPORT_NUMBER_SCHEMA,'%REFERENCE5%',ISNULL(@REFERENCE5,'')); + SET @EXPORT_NUMBER_SCHEMA = REPLACE(@EXPORT_NUMBER_SCHEMA,'%EXTERNAL_REFERENCE1%',ISNULL(@EXTERNAL_REFERENCE1,'')); + SET @EXPORT_NUMBER_SCHEMA = REPLACE(@EXPORT_NUMBER_SCHEMA,'%EXTERNAL_REFERENCE2%',ISNULL(@EXTERNAL_REFERENCE2,'')); + SET @EXPORT_NUMBER_SCHEMA = REPLACE(@EXPORT_NUMBER_SCHEMA,'%EXTERNAL_REFERENCE3%',ISNULL(@EXTERNAL_REFERENCE3,'')); + SET @EXPORT_NUMBER_SCHEMA = REPLACE(@EXPORT_NUMBER_SCHEMA,'%EXTERNAL_REFERENCE4%',ISNULL(@EXTERNAL_REFERENCE4,'')); + SET @EXPORT_NUMBER_SCHEMA = REPLACE(@EXPORT_NUMBER_SCHEMA,'%EXTERNAL_REFERENCE5%',ISNULL(@EXTERNAL_REFERENCE5,'')); + + DECLARE CURSOR_PLACEHOLDER CURSOR + LOCAL FAST_FORWARD FOR + SELECT [PLACEHOLDER_NAME] as 'Placeholder_Name', [PLACEHOLDER] as 'Placeholder' + FROM [TBDEX_CFG_RESOURCES] + WHERE [PROFILE_ID] IN (0,@PROFILE_ID) AND [ACTIVE] = @ACTIVE_FLAG AND LTRIM(RTRIM([PLACEHOLDER_TYPE])) = @PLACEHOLDER_TYPE + ORDER BY [SEQUENCE] ASC; + + OPEN CURSOR_PLACEHOLDER + FETCH NEXT FROM CURSOR_PLACEHOLDER INTO @PLACEHOLDER_NAME,@PLACEHOLDER; + WHILE @@FETCH_STATUS = 0 + BEGIN + + SET @EXPORT_NUMBER_SCHEMA = REPLACE(@EXPORT_NUMBER_SCHEMA,concat('%',@PLACEHOLDER_NAME,'%'),ISNULL(@PLACEHOLDER,'')); + + FETCH NEXT FROM CURSOR_PLACEHOLDER INTO @PLACEHOLDER_NAME,@PLACEHOLDER; + END + CLOSE CURSOR_PLACEHOLDER; + DEALLOCATE CURSOR_PLACEHOLDER; + ----------------------------------------------------------------------------------------------------------------------------------- + + + --=================================================-- Handle placeholders 2/2 --=================================================-- + SET @NEXT_EXPORT_NUMBER = REPLACE(@NEXT_EXPORT_NUMBER,'%PROFILE_ID%',ISNULL(@PROFILE_ID,'')); + SET @NEXT_EXPORT_NUMBER = REPLACE(@NEXT_EXPORT_NUMBER,'%TEST_MODE%',ISNULL(@TEST_MODE,'')); + SET @NEXT_EXPORT_NUMBER = REPLACE(@NEXT_EXPORT_NUMBER,'%ASYNC_MODE%',ISNULL(@ASYNC_MODE,'')); + SET @NEXT_EXPORT_NUMBER = REPLACE(@NEXT_EXPORT_NUMBER,'%BATCH_ID%',ISNULL(@BATCH_ID,'')); + SET @NEXT_EXPORT_NUMBER = REPLACE(@NEXT_EXPORT_NUMBER,'%BATCH_CREATOR%',ISNULL(@BATCH_CREATOR,'')); + SET @NEXT_EXPORT_NUMBER = REPLACE(@NEXT_EXPORT_NUMBER,'%LANGUAGE%',ISNULL(@LANGUAGE,'')); + SET @NEXT_EXPORT_NUMBER = REPLACE(@NEXT_EXPORT_NUMBER,'%LOG_LEVEL%',ISNULL(@LOG_LEVEL,'')); + SET @NEXT_EXPORT_NUMBER = REPLACE(@NEXT_EXPORT_NUMBER,'%FORCE%',ISNULL(@FORCE,'')); + SET @NEXT_EXPORT_NUMBER = REPLACE(@NEXT_EXPORT_NUMBER,'%MY_PROCEDURE_NAME%',ISNULL(@MY_FUNCTION_NAME,'')); + SET @NEXT_EXPORT_NUMBER = REPLACE(@NEXT_EXPORT_NUMBER,'%MY_FUNCTION_NAME%',ISNULL(@MY_FUNCTION_NAME,'')); + SET @NEXT_EXPORT_NUMBER = REPLACE(@NEXT_EXPORT_NUMBER,'%PROFILE_NAME%',ISNULL(@PROFILE_NAME,'')); + SET @NEXT_EXPORT_NUMBER = REPLACE(@NEXT_EXPORT_NUMBER,'%MANDANTOR%',ISNULL(@MANDANTOR,'')); + SET @NEXT_EXPORT_NUMBER = REPLACE(@NEXT_EXPORT_NUMBER,'%EXPORT_TYPE%',ISNULL(@EXPORT_TYPE,'')); + SET @NEXT_EXPORT_NUMBER = REPLACE(@NEXT_EXPORT_NUMBER,'%EXPORT_NUMBER_SCHEMA%',ISNULL(@EXPORT_NUMBER_SCHEMA,'')); + SET @NEXT_EXPORT_NUMBER = REPLACE(@NEXT_EXPORT_NUMBER,'%DEFAULT_DATA_SEPARATOR%',ISNULL(@DEFAULT_DATA_SEPARATOR,'')); + SET @NEXT_EXPORT_NUMBER = REPLACE(@NEXT_EXPORT_NUMBER,'%REFERENCE1%',ISNULL(@REFERENCE1,'')); + SET @NEXT_EXPORT_NUMBER = REPLACE(@NEXT_EXPORT_NUMBER,'%REFERENCE2%',ISNULL(@REFERENCE2,'')); + SET @NEXT_EXPORT_NUMBER = REPLACE(@NEXT_EXPORT_NUMBER,'%REFERENCE3%',ISNULL(@REFERENCE3,'')); + SET @NEXT_EXPORT_NUMBER = REPLACE(@NEXT_EXPORT_NUMBER,'%REFERENCE4%',ISNULL(@REFERENCE4,'')); + SET @NEXT_EXPORT_NUMBER = REPLACE(@NEXT_EXPORT_NUMBER,'%REFERENCE5%',ISNULL(@REFERENCE5,'')); + SET @NEXT_EXPORT_NUMBER = REPLACE(@NEXT_EXPORT_NUMBER,'%EXTERNAL_REFERENCE1%',ISNULL(@EXTERNAL_REFERENCE1,'')); + SET @NEXT_EXPORT_NUMBER = REPLACE(@NEXT_EXPORT_NUMBER,'%EXTERNAL_REFERENCE2%',ISNULL(@EXTERNAL_REFERENCE2,'')); + SET @NEXT_EXPORT_NUMBER = REPLACE(@NEXT_EXPORT_NUMBER,'%EXTERNAL_REFERENCE3%',ISNULL(@EXTERNAL_REFERENCE3,'')); + SET @NEXT_EXPORT_NUMBER = REPLACE(@NEXT_EXPORT_NUMBER,'%EXTERNAL_REFERENCE4%',ISNULL(@EXTERNAL_REFERENCE4,'')); + SET @NEXT_EXPORT_NUMBER = REPLACE(@NEXT_EXPORT_NUMBER,'%EXTERNAL_REFERENCE5%',ISNULL(@EXTERNAL_REFERENCE5,'')); + + DECLARE CURSOR_PLACEHOLDER CURSOR + LOCAL FAST_FORWARD FOR + SELECT [PLACEHOLDER_NAME] as 'Placeholder_Name', [PLACEHOLDER] as 'Placeholder' + FROM [TBDEX_CFG_RESOURCES] + WHERE [PROFILE_ID] IN (0,@PROFILE_ID) AND [ACTIVE] = @ACTIVE_FLAG AND LTRIM(RTRIM([PLACEHOLDER_TYPE])) = @PLACEHOLDER_TYPE + ORDER BY [SEQUENCE] ASC; + + OPEN CURSOR_PLACEHOLDER + FETCH NEXT FROM CURSOR_PLACEHOLDER INTO @PLACEHOLDER_NAME,@PLACEHOLDER; + WHILE @@FETCH_STATUS = 0 + BEGIN + + SET @NEXT_EXPORT_NUMBER = REPLACE(@NEXT_EXPORT_NUMBER,concat('%',@PLACEHOLDER_NAME,'%'),ISNULL(@PLACEHOLDER,'')); + + FETCH NEXT FROM CURSOR_PLACEHOLDER INTO @PLACEHOLDER_NAME,@PLACEHOLDER; + END + CLOSE CURSOR_PLACEHOLDER; + DEALLOCATE CURSOR_PLACEHOLDER; + ----------------------------------------------------------------------------------------------------------------------------------- + + + --======================================================-- insert result --======================================================-- + INSERT INTO @vTBDEX_RUN_NUMBER_RANGE([GUID],[PROFILE_ID],[ACTIVE],[EXPORT_NUMBER_SCHEMA], [EXPORT_NUMBER_COUNTER], + [EXPORT_NUMBER], [NEXT_EXPORT_NUMBER_COUNTER],[NEXT_EXPORT_NUMBER]) + VALUES(@GUID, @PROFILE_ID, @ACTIVE, @EXPORT_NUMBER_SCHEMA, @EXPORT_NUMBER_COUNTER, + @EXPORT_NUMBER, @NEXT_EXPORT_NUMBER_COUNTER, @NEXT_EXPORT_NUMBER); + ----------------------------------------------------------------------------------------------------------------------------------- + + RETURN; + +END; +GO \ No newline at end of file diff --git a/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_CHECK_SYSTEM].sql b/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_CHECK_SYSTEM].sql new file mode 100644 index 0000000000000000000000000000000000000000..dcc89c80938ee04eac907a37e4bf246ad969a997 GIT binary patch literal 38556 zcmeI5X>$}u5{CP$He&z7*k6!ig^f5i9KJ#z1ZY>6bpQ?pp#Y3o)?7xyUjO;seV@un zW%V`pNCG+(qnYXH%F4>hyRxeP_usu@t=KPm#m!=?*elkHBfTFK8~WSR)op$IYw?%j zu0HYZcmJq+w$*N}xUClJ`oE?-_x0(HUTei}LtENk)?cqUEOvAUZ62!iYH?4WR*Qe? z^Iq|jUclWf9;F_w#rMT|{{{A|#lMPY#na-~;#gyOQT(F+kBgW3>lN?x%WuVdUFFj& zyAqizH@epAkD3*i=J}mpBFh+L4#f0eWG!` z6RhLn8?{?c^S>reVfMe(l`DFEpCJBv`u)4&2VHqB9Kh|Q|7*ZK?^*snn}b!+;%)J# z#`r?CHEb7!_ZPzYsz!IUxS>x^bO*D_JufsOsLJ=p>2pu?c%^&pox+W=4sX*dKJWD; ziSIQtf21BRi?+<)Yst}`dU&UPj{7{aT>M=<)8e*%y(a9g>vdJv?rFB(CyGB4c5v?t zVHKF{>&i>bH1l{xP_7rt#aI0?UekAG61Z!EyQv;u=x*)>6S(WL{=d}wAH|9=%_;G- z?uI5`>NmI$nTdWc)@&n>VEaOtB7HW8NXl1w-4q2+L_0>o*zNC%DD|c2^R@m5PjLUH z^jVDbzF@!8*qdRmC90iNU^5q!LEjRta2$}N%^1hh# z(HDY)&UG8!1}DbNnCZO^?}oUd8J=?xquCIB?g}%;a$m2F1g!}k`mzd-Irt)t^``V0 z-);$pQK6?<*p)xvbLG9d53-eJW?S=u=V89ex2Jb6hy&mO?AlXlC%3m)yFYaO_jCmd zj+|g=--}bi*1k=@KTbCMMAxz1$I=Vfd$Xa>Q(p_>47`_(G#hZyO6v?mXZy?N+O9Bb zZQS9r$ek;q5d2!@2Zvmr$DHo#qO$YGV(PC7ZK=4VdB3DtY45epJ?*_Oi!Z-Eo%g~0 zm*FmHes2~3NYvdIhiz%xoB9UcPUBU{%WXlgV%x@*?Rd6R=|JuGk!hjXO@XRr8C{U0S+n0 z`E=}U*e}bPj1TwfoZw!Y6Wr@_f_q~oa5p7g_(kT&?8!sHo5*!_@L-)cmb3Z0l&t7O z>CQ3-!V&vPc9CK-1K2*~CLk{)ISejDzf|R;9nO*9k%x%(Oyf{o5n)6im0s~u}) z$BOk{rc4x8ucuF80l0e@#M%5#Peuz?YI^b%RwS#{431@X`L!I?lKGDOjKNuuoIliS zRlk+jbsi*LkCq}*ppQrL+L|Ni1+~U++bZ?Abn4}`WkxL9)vWovHEpYMjzy%ux}M4X z&#;@o!0)I=DTZ}(1e5n)Z%ZU%7&QGhxGm8}TibH1Icx+-bsMDX@*%B#^XQ2o+S=Zz zwGBIn<-x1VTgR`tkKaBQ!!|sfO`**^reYE9FT-{2!r8MX zy!vVXL3NWLx7pN1P%T9^sO%lPq@AUNqkrg+^-wAn-lqRnnG`X|d0^z!7)S41$@p)S zcH!fhy&Fy6l&zN8daAe33>K}i;(L;6DNG}^%Wi$8iRgIzczB#1@*Ion$GZGCNqDn< zY|^?ud*yr-9s_Hh`53F3CATLrKb>AF>rv?IG(J1&G)=J~Pvp6{^djadSlyXbrsC7c zRajhF&nl27j_9_U$rv2#pLMpPZ44h`zQV>*&NZ;UozF(I_Z`~u;$Nls3SvsiT@$x+1=_ijWBdcRIe?;L?<&D>OR+t$b!n5^=a9CwfQ#OZn zXsU9&mWa={QpG`3&ed?yaYJGIIIR?C60rYm;cGDOs2ZY#zi{v4Lg84YtH;4WHf z<9WExIHTR0&%NqumgZV5YML%fvy-wjQJ-M-@sTBMiWiKh>-~-%g&ZjUvbtN}p@L+V zIkGCZh8cDGR95)zgD1-G0IP~8H1^DizjqlFxNn|+P(7!-+sQ7E(xwmM`lOm+UU`&| z(L0JEsb*#m8T-*jl~pX#XEn)0qlHx*o~i8e81t0aabUZ2GlR4X-ks+sdSa(sm&c&K z?&GMrXv+a~c?{EbmS-*JapqZf@oD5S+#5lUbvX^w{I1i3CiB$gz&3pz5r*%xr_$!3 zG`;P*f2ns?*V%(^yVuXg;?RrHB7Bsl9XL%<`eO2HsGMcD6MG!D6|u7;iu$=GD3A1u z^@dI5&tsMR{Z5L}H`8y2f_h7^s7cEAXzcaRRA`2fLu>j>braDW>zwS6#nNnQeVd&L z{`pX&tM3ANq-dXb-?Gm+M(pXR-#^NDIj`b&pAt}WOPCxAuXWLtZ_Et+_R@(1*YsYd zq0=#kbExb`>_LO>hH-v1cDRuX@x79^nq@usdc~r!F}zk9=hZ1tGTD~H$a61|qi>Eu*!>bZiZeaDwyc_sfFs*_96f82$6>GK z58JL%G$oN4J5Z?FvYjVo{rQ=GH=LSz(AIeCdy?9B4m87w)oSFWs%g6X3vxBjKd5e+ z%6*+K^D^9@VMdHgE>EG3$%tt?j zX6SM^7K1p)xlcF!ZketI#eC|f`joB)1-%)0uc!){cF)YGk-O>gHD(t=kGqFwdTc&c z<3oe$)Crml_x`540}AyN*N=Pp;@Q-pfSu8TYF;8xJITU!18oa)%QO!1u`1o;L%|0A>T{a*mG1qckNEf|JVtlcKQY9IoL@a)V-9?$a>U|Z1+`5 zYE>+GZ{DlFkJ}r)?kJB3-N1tLfXL76Dg$LcY`Nd@`o`O}yyu{^QmvnziAGoMfvgo- zu_KLR=X3-)WV2FrD&=r|PT-;)LE4`oBEznR zmqQ#fx(^QdY2taa+<<8aqpXkKsKR;xQer2TO-hM;&%MK+1uWmcU)M6D=z<(8&TE8g z+cbh%BB0jwi>+#y&R>-#=iEtyca*G)kMtnZf^GN>f>ov5wD6ewU5%Kv1v^D_T1?9v zG%YlweJ@dx^F;YPDMYm0q-|{`r)zyAI#*9=n0z$M8G5|T{o`_jL&^0Kcw%F*l9P_u z;m(E^_GPVhS}owXV{V2v+u89x>bg0{c91@~uYI!aS(Ul({spz@(%QaS;X~X&9>_E4bbKB9+N)_uvT;*Q; zR=Ydka;`F!e(e0W^Q^fOf8616ny#I=Tff)l<3o!X=Yub_@Yi`{T(PD7+Zcs&HJyyq%*Kcsr63_2o>Qohx` z=anE(v5e7)M*db>5j==Kc|wYx8^0lahc0}rDxM?RbSjeAxqucVR^_QGMjJ*j4BOy{ z$$RqiGRo3~E+1#UIkA-Jm~)hyP5^GNL$SCCt{n^^&JecQt@59F&fYtxJ>4B4(_~Q! z*gX*DR1^S#XK}zMWHsP)@-kSa*fI3>$quOYk68X1Yw{ z=&j9v_!z2pY@OXtsJULN-*Md;t0@+X^PN3%3 z81IJU=3MNS+uyrtp80r=0Tm6OYk6Ps>1uk0>q4mL9!gj&qOfLNfsRHl=ULN(&+t-x z)Fs??5B3K?D1S~@w}UDq;zR%B5`DHF0aWXDP;rK5w}Z;!q2^OxyOUrhKe@K6!uim3 z^Emj29(SM2e2sBne7yHMb%G|t{k7TM0bMWZ35k<=qNB8mSl6;G)kxR)bl%UfY2Pnm zH6v|LvGIL5Z6j@tq?_Vs%MZnAs>Xw?;gBaHE86x1j`7YmEJK_f_nt2#f2KlLZE4#1 zyfm5Vu#0@=!R)H$$l1#T>%;%W2WubCU5v`0~#24g#>XA4@iCUyV znIt>2$SPWR?h^jZXzk)jG*dn?W-daUY$Mb$E1 zOP&T#3$Ai&U=y6;zHpxPthURgV{prl@#)YPORt|7Hs@ha%#w6bLKh{tE-Rm#+GSG9 hdE}^noA%_9x_{qgQqN2C&a>ap>eFOWBWwC?@qdE=yRiTO literal 0 HcmV?d00001 diff --git a/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_CLEAN_UP].sql b/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_CLEAN_UP].sql new file mode 100644 index 0000000000000000000000000000000000000000..fcaf2b097a6226032247c9987aa4c8356d5cd860 GIT binary patch literal 87316 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 nicht ok +-- ================================================================= +-- Copyright (c) 2025 by Digital Data GmbH +-- +-- Digital Data GmbH • Ludwig-Rinn-Strasse 16 • D-35452 Heuchelheim +-- Tel.: 0641/202360 • E-Mail: info-flow@digitaldata.works +-- ================================================================= +-- Creation Date / Author: 01.08.2025 / MK +-- Version Date / Editor: 01.08.2025 / MK +-- Version Number: 1.0.0.0 +-- ================================================================= +-- History: +-- 01.08.2025 / MK - First Version + +CREATE OR ALTER PROCEDURE [dbo].[PRDEX_GET_INPUT]( + @pPROFILE_ID BIGINT, + @pTEST_MODE BIT, + @pASYNC_MODE BIT, + @pBATCH_ID NVARCHAR(25), + @pBATCH_CREATOR NVARCHAR(50), + @pLANGUAGE NVARCHAR(10), + @pLOG_LEVEL NVARCHAR(25), + @pSTART_QUERY NVARCHAR(MAX), + @pSTART_QUERY_VAR1 NVARCHAR(50), + @pSTART_QUERY_VAR2 NVARCHAR(50), + @pSTART_QUERY_VAR3 NVARCHAR(50), + @pSTART_QUERY_VAR4 NVARCHAR(50), + @pSTART_QUERY_VAR5 NVARCHAR(50), + @pFORCE BIT, + @pPROFILE_NAME NVARCHAR(50), + @pMANDANTOR NVARCHAR(50), + @pEXPORT_TYPE NVARCHAR(50) +) +AS +BEGIN TRY + + SET NOCOUNT ON; + SET XACT_ABORT ON; + + -- declare new vars because of parameter sniffing + DECLARE @PROFILE_ID BIGINT = @pPROFILE_ID, + @TEST_MODE BIT = @pTEST_MODE, + @ASYNC_MODE BIT = @pASYNC_MODE, + @BATCH_ID NVARCHAR(25) = @pBATCH_ID, + @BATCH_CREATOR NVARCHAR(25) = @pBATCH_CREATOR, + @LANGUAGE NVARCHAR(10) = @pLANGUAGE, + @LOG_LEVEL NVARCHAR(25) = UPPER(ISNULL(@pLOG_LEVEL,'INFO')), + @START_QUERY NVARCHAR(MAX) = @pSTART_QUERY, + @START_QUERY_VAR1 NVARCHAR(50) = @pSTART_QUERY_VAR1, + @START_QUERY_VAR2 NVARCHAR(50) = @pSTART_QUERY_VAR2, + @START_QUERY_VAR3 NVARCHAR(50) = @pSTART_QUERY_VAR3, + @START_QUERY_VAR4 NVARCHAR(50) = @pSTART_QUERY_VAR4, + @START_QUERY_VAR5 NVARCHAR(50) = @pSTART_QUERY_VAR5, + @FORCE BIT = @pFORCE, + @PROFILE_NAME NVARCHAR(50) = @pPROFILE_NAME, + @MANDANTOR NVARCHAR(50) = @pMANDANTOR, + @EXPORT_TYPE NVARCHAR(50) = @pEXPORT_TYPE; + + -- declare virtual table for found data + DECLARE @vTBDEX_IN as TABLE ( + [GUID] [bigint] IDENTITY(1,1) NOT NULL, + [PROFILE_ID] [smallint] NOT NULL, + [BATCH_ID] [nvarchar](25) NOT NULL, + [REFERENCE1] [nvarchar](150) NOT NULL, + [REFERENCE2] [nvarchar](150) NULL, + [REFERENCE3] [nvarchar](150) NULL, + [REFERENCE4] [nvarchar](150) NULL, + [REFERENCE5] [nvarchar](150) NULL, + [EXTERNAL_REFERENCE1] [nvarchar](2000) NULL, + [EXTERNAL_REFERENCE2] [nvarchar](2000) NULL, + [EXTERNAL_REFERENCE3] [nvarchar](2000) NULL, + [EXTERNAL_REFERENCE4] [nvarchar](2000) NULL, + [EXTERNAL_REFERENCE5] [nvarchar](2000) NULL, + [TEST_MODE] [bit] NOT NULL, + [ASYNC_MODE] [bit] NOT NULL, + [COMMENT] [nvarchar](150) NULL, + [ADDED_WHO] [nvarchar](50) NOT NULL, + [ADDED_WHEN] [datetime] NOT NULL); + + -- declare runtime vars + DECLARE @MY_PROCEDURE_NAME NVARCHAR(128) = OBJECT_NAME(@@PROCID); + DECLARE @ACTIVE_FLAG BIT = 1, + @INACTIVE_FLAG BIT = 0, + @ROW_COUNT1 SMALLINT = 0, + @ROW_COUNTER_INPUT SMALLINT = 0, + @QUERY_KEYWORD NVARCHAR(50) = 'QUERY', + @DB_VERSION NVARCHAR(25) = NULL, + @QUERY_GET_INPUT NVARCHAR(MAX) = NULL, + @REFERENCE1 NVARCHAR(150) = 0, + @REFERENCE2 NVARCHAR(150) = NULL, + @REFERENCE3 NVARCHAR(150) = NULL, + @REFERENCE4 NVARCHAR(150) = NULL, + @REFERENCE5 NVARCHAR(150) = NULL, + @EXTERNAL_REFERENCE1 NVARCHAR(250) = NULL, + @EXTERNAL_REFERENCE2 NVARCHAR(250) = NULL, + @EXTERNAL_REFERENCE3 NVARCHAR(250) = NULL, + @EXTERNAL_REFERENCE4 NVARCHAR(250) = NULL, + @EXTERNAL_REFERENCE5 NVARCHAR(250) = NULL, + @PLACEHOLDER_NAME NVARCHAR(50) = NULL, + @PLACEHOLDER NVARCHAR(MAX) = NULL, + @PLACEHOLDER_TYPE NVARCHAR(10) = 'CONST', + @TBDEX_TMP_TABLE_SCHEMA SYSNAME = SCHEMA_NAME(), + @TBDEX_TMP_TABLE_NAME SYSNAME = CONCAT(N'##TBDEX_TMP_CONTENT_BATCH_',@BATCH_ID), + @TBDEX_TMP_TABLE_SCHEMA_AND_NAME NVARCHAR(150) = NULL, + @TBDEX_TMP_TABLE_COLUMNS NVARCHAR(MAX) = NULL, + @TBDEX_TMP_TABLE_DROP_QUERY NVARCHAR(MAX) = NULL, + @TBDEX_TMP_TABLE_CREATE_QUERY NVARCHAR(MAX) = NULL, + @TBDEX_TMP_TABLE_INSERT_QUERY NVARCHAR(MAX) = NULL, + @TBDEX_TMP_TABLE_CONTENT NVARCHAR(MAX) = NULL, + @RETURN_STATUS INT = 0, + @RETURN_STATUS_TEXT NVARCHAR(MAX) = concat('START PROCEDURE [',@MY_PROCEDURE_NAME,'] @ ',CONVERT(varchar(50),GETDATE(),120)), + @RETURN_ERROR_TEXT NVARCHAR(MAX) = ''; + + PRINT '===================================================================================================='; + PRINT @RETURN_STATUS_TEXT; + PRINT ''; + PRINT 'PARAMETER01 - @PROFILE_ID: ' + CONVERT(NVARCHAR(50),ISNULL(@PROFILE_ID,'')); + PRINT 'PARAMETER02 - @TEST_MODE: ' + CONVERT(NVARCHAR(50),ISNULL(@TEST_MODE,'')); + PRINT 'PARAMETER03 - @ASYNC_MODE: ' + CONVERT(NVARCHAR(50),ISNULL(@ASYNC_MODE,'')); + PRINT 'PARAMETER04 - @BATCH_ID: ' + CONVERT(NVARCHAR(50),ISNULL(@BATCH_ID,'')); + PRINT 'PARAMETER05 - @BATCH_CREATOR: ' + CONVERT(NVARCHAR(50),ISNULL(@BATCH_CREATOR,'')); + PRINT 'PARAMETER06 - @LANGUAGE: ' + CONVERT(NVARCHAR(50),ISNULL(@LANGUAGE,'')); + PRINT 'PARAMETER07 - @LOG_LEVEL: ' + CONVERT(NVARCHAR(50),ISNULL(@LOG_LEVEL,'')); + PRINT 'PARAMETER08 - @START_QUERY: ' + CONVERT(NVARCHAR(50),ISNULL(@START_QUERY,'')); + PRINT 'PARAMETER09 - @START_QUERY_VAR1: ' + CONVERT(NVARCHAR(50),ISNULL(@START_QUERY_VAR1,'')); + PRINT 'PARAMETER10 - @START_QUERY_VAR2: ' + CONVERT(NVARCHAR(50),ISNULL(@START_QUERY_VAR2,'')); + PRINT 'PARAMETER11 - @START_QUERY_VAR3: ' + CONVERT(NVARCHAR(50),ISNULL(@START_QUERY_VAR3,'')); + PRINT 'PARAMETER12 - @START_QUERY_VAR4: ' + CONVERT(NVARCHAR(50),ISNULL(@START_QUERY_VAR4,'')); + PRINT 'PARAMETER13 - @START_QUERY_VAR5: ' + CONVERT(NVARCHAR(50),ISNULL(@START_QUERY_VAR5,'')); + PRINT 'PARAMETER14 - @FORCE: ' + CONVERT(NVARCHAR(50),ISNULL(@FORCE,'')); + PRINT 'PARAMETER15 - @PROFILE_NAME: ' + CONVERT(NVARCHAR(50),ISNULL(@PROFILE_NAME,'')); + PRINT 'PARAMETER16 - @MANDANTOR: ' + CONVERT(NVARCHAR(50),ISNULL(@MANDANTOR,'')); + PRINT 'PARAMETER17 - @EXPORT_TYPE: ' + CONVERT(NVARCHAR(50),ISNULL(@EXPORT_TYPE,'')); + PRINT ''; + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + --==================================================-- Get first sql query --===================================================-- + IF (((UPPER(@START_QUERY) LIKE 'SELECT%') OR (UPPER(@START_QUERY) LIKE '%SELECT%')) AND (UPPER(@START_QUERY) LIKE '%FROM%')) BEGIN + + SET @QUERY_GET_INPUT = LTRIM(RTRIM(@START_QUERY)); + + END; ELSE IF ((SELECT count(*) + FROM [TBDEX_CFG_RESOURCES] + WHERE [PROFILE_ID] IN (0,@PROFILE_ID) AND [ACTIVE] = @ACTIVE_FLAG + AND LTRIM(RTRIM([PLACEHOLDER_NAME])) = @START_QUERY AND LTRIM(RTRIM([PLACEHOLDER_TYPE])) = @QUERY_KEYWORD) >= 1) BEGIN + + SET @QUERY_GET_INPUT = (SELECT TOP 1 LTRIM(RTRIM([PLACEHOLDER])) + FROM [TBDEX_CFG_RESOURCES] + WHERE [PROFILE_ID] IN (@PROFILE_ID,0) AND [ACTIVE] = @ACTIVE_FLAG + AND LTRIM(RTRIM([PLACEHOLDER_NAME])) = @START_QUERY AND LTRIM(RTRIM([PLACEHOLDER_TYPE])) = @QUERY_KEYWORD + ORDER BY [PROFILE_ID] ASC,[GUID] DESC); + + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + --=================================================-- Check first sql query --===================================================-- + IF (LEN(@QUERY_GET_INPUT) < 15) BEGIN + + --====================================================-- exception / error --====================================================-- + SET @RETURN_STATUS = 50001; + SET @RETURN_STATUS_TEXT = concat('Wrong call or configuraton!',''); + SET @RETURN_ERROR_TEXT = concat('Found no valid querys (query needs to be 15 chars or more)!',''); + + THROW @RETURN_STATUS,@RETURN_ERROR_TEXT,1; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; ELSE BEGIN + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('Found "@QUERY_GET_INPUT" query: ',char(13),@QUERY_GET_INPUT); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT ''; + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + --==================================================-- Handle placeholders --==================================================-- + PRINT ''; + PRINT 'Replacing placeholders in query...'; + + SET @QUERY_GET_INPUT = REPLACE(@QUERY_GET_INPUT,'%PROFILE_ID%',ISNULL(@PROFILE_ID,'')); + SET @QUERY_GET_INPUT = REPLACE(@QUERY_GET_INPUT,'%TEST_MODE%',ISNULL(@TEST_MODE,'')); + SET @QUERY_GET_INPUT = REPLACE(@QUERY_GET_INPUT,'%ASYNC_MODE%',ISNULL(@ASYNC_MODE,'')); + SET @QUERY_GET_INPUT = REPLACE(@QUERY_GET_INPUT,'%BATCH_ID%',ISNULL(@BATCH_ID,'')); + SET @QUERY_GET_INPUT = REPLACE(@QUERY_GET_INPUT,'%BATCH_CREATOR%',ISNULL(@BATCH_CREATOR,'')); + SET @QUERY_GET_INPUT = REPLACE(@QUERY_GET_INPUT,'%LANGUAGE%',ISNULL(@LANGUAGE,'')); + SET @QUERY_GET_INPUT = REPLACE(@QUERY_GET_INPUT,'%LOG_LEVEL%',ISNULL(@LOG_LEVEL,'')); + SET @QUERY_GET_INPUT = REPLACE(@QUERY_GET_INPUT,'%START_QUERY%',ISNULL(@START_QUERY,'')); + SET @QUERY_GET_INPUT = REPLACE(@QUERY_GET_INPUT,'%START_QUERY_VAR1%',ISNULL(@START_QUERY_VAR1,'')); + SET @QUERY_GET_INPUT = REPLACE(@QUERY_GET_INPUT,'%START_QUERY_VAR2%',ISNULL(@START_QUERY_VAR2,'')); + SET @QUERY_GET_INPUT = REPLACE(@QUERY_GET_INPUT,'%START_QUERY_VAR3%',ISNULL(@START_QUERY_VAR3,'')); + SET @QUERY_GET_INPUT = REPLACE(@QUERY_GET_INPUT,'%START_QUERY_VAR4%',ISNULL(@START_QUERY_VAR4,'')); + SET @QUERY_GET_INPUT = REPLACE(@QUERY_GET_INPUT,'%START_QUERY_VAR5%',ISNULL(@START_QUERY_VAR5,'')); + SET @QUERY_GET_INPUT = REPLACE(@QUERY_GET_INPUT,'%FORCE%',ISNULL(@FORCE,'')); + SET @QUERY_GET_INPUT = REPLACE(@QUERY_GET_INPUT,'%MY_PROCEDURE_NAME%',ISNULL(@MY_PROCEDURE_NAME,'')); + SET @QUERY_GET_INPUT = REPLACE(@QUERY_GET_INPUT,'%PROFILE_NAME%',ISNULL(@PROFILE_NAME,'')); + SET @QUERY_GET_INPUT = REPLACE(@QUERY_GET_INPUT,'%MANDANTOR%',ISNULL(@MANDANTOR,'')); + SET @QUERY_GET_INPUT = REPLACE(@QUERY_GET_INPUT,'%EXPORT_TYPE%',ISNULL(@EXPORT_TYPE,'')); + + DECLARE CURSOR_PLACEHOLDER CURSOR + LOCAL FAST_FORWARD FOR + SELECT [PLACEHOLDER_NAME] as 'Placeholder_Name', [PLACEHOLDER] as 'Placeholder' + FROM [TBDEX_CFG_RESOURCES] + WHERE [PROFILE_ID] IN (0,@PROFILE_ID) AND [ACTIVE] = @ACTIVE_FLAG AND LTRIM(RTRIM([PLACEHOLDER_TYPE])) = @PLACEHOLDER_TYPE + ORDER BY [SEQUENCE] ASC; + + OPEN CURSOR_PLACEHOLDER + FETCH NEXT FROM CURSOR_PLACEHOLDER INTO @PLACEHOLDER_NAME,@PLACEHOLDER; + WHILE @@FETCH_STATUS = 0 + BEGIN + + SET @QUERY_GET_INPUT = REPLACE(@QUERY_GET_INPUT,concat('%',@PLACEHOLDER_NAME,'%'),ISNULL(@PLACEHOLDER,'')); + + FETCH NEXT FROM CURSOR_PLACEHOLDER INTO @PLACEHOLDER_NAME,@PLACEHOLDER; + END + CLOSE CURSOR_PLACEHOLDER; + DEALLOCATE CURSOR_PLACEHOLDER; + ----------------------------------------------------------------------------------------------------------------------------------- + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('The final processed "@QUERY_GET_INPUT" query: ',char(13),@QUERY_GET_INPUT); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT ''; + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + --======================================================-- Safety checks --======================================================-- + EXEC [PRDEX_TEST_DYNAMIC_SQL] @pQUERY = @QUERY_GET_INPUT, + @pRETURN_STATUS = 50051, + @pQUERY_NAME = N'@QUERY_GET_INPUT'; + ----------------------------------------------------------------------------------------------------------------------------------- + + --==================================================-- run insert statement --===================================================-- + INSERT INTO @vTBDEX_IN([PROFILE_ID],[BATCH_ID],[REFERENCE1],[REFERENCE2],[REFERENCE3],[REFERENCE4],[REFERENCE5], + [EXTERNAL_REFERENCE1],[EXTERNAL_REFERENCE2],[EXTERNAL_REFERENCE3],[EXTERNAL_REFERENCE4],[EXTERNAL_REFERENCE5], + [TEST_MODE],[ASYNC_MODE],[COMMENT],[ADDED_WHO],[ADDED_WHEN]) + EXEC sp_executesql @QUERY_GET_INPUT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('Result saved to temp table!',''); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT ''; + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ---------------------------------------------------------------------------------------------------------------------------------- + + --==========================================-- Count how many files are there now --===========================================-- + SET @ROW_COUNT1 = ISNULL((SELECT count(*) FROM @vTBDEX_IN WHERE [PROFILE_ID] = @PROFILE_ID AND [BATCH_ID] = @BATCH_ID),0); + IF (@ROW_COUNT1 < 1) BEGIN + + --====================================================-- exception / error --====================================================-- + SET @RETURN_STATUS = 50002; + SET @RETURN_STATUS_TEXT = concat('Maybe docs/data are already processed!?',char(13), + '1. Check view [VWDEX_OUT]',char(13), + '2. Check tables [TBDEX_IN] and [TBDEX_TMP_PROCESS]',char(13), + '3. Check the file status',char(13)); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'WARN: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO','WARN','ERROR')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'WARN', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + RETURN @RETURN_STATUS; + + END; ELSE BEGIN + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('Found: ',convert(nvarchar(100),@ROW_COUNT1),' data rows to process!'); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; + + --========================================-- Print files which should be processed --==========================================-- + + BEGIN TRANSACTION; + + DECLARE CURSOR_INPUT CURSOR + LOCAL FAST_FORWARD FOR + SELECT [REFERENCE1],[REFERENCE2],[REFERENCE3],[REFERENCE4],[REFERENCE5], + [EXTERNAL_REFERENCE1],[EXTERNAL_REFERENCE2],[EXTERNAL_REFERENCE3],[EXTERNAL_REFERENCE4],[EXTERNAL_REFERENCE5] + FROM @vTBDEX_IN + WHERE [PROFILE_ID] = @PROFILE_ID AND [BATCH_ID] = @BATCH_ID; + + OPEN CURSOR_INPUT + FETCH NEXT FROM CURSOR_INPUT INTO @REFERENCE1,@REFERENCE2,@REFERENCE3,@REFERENCE4,@REFERENCE5,@EXTERNAL_REFERENCE1,@EXTERNAL_REFERENCE2,@EXTERNAL_REFERENCE3,@EXTERNAL_REFERENCE4,@EXTERNAL_REFERENCE5; + WHILE @@FETCH_STATUS = 0 + BEGIN + SET @ROW_COUNTER_INPUT = @ROW_COUNTER_INPUT + 1; + + PRINT '' + char(13) + 'Processing data in BATCH_ID: ' + CONVERT(NVARCHAR(25),@BATCH_ID); + PRINT 'REFERENCE1: ' + ISNULL(CONVERT(NVARCHAR(150),@REFERENCE1),''); + PRINT 'REFERENCE2: ' + ISNULL(CONVERT(NVARCHAR(150),@REFERENCE2),''); + PRINT 'REFERENCE3: ' + ISNULL(CONVERT(NVARCHAR(150),@REFERENCE3),''); + PRINT 'REFERENCE4: ' + ISNULL(CONVERT(NVARCHAR(150),@REFERENCE4),''); + PRINT 'REFERENCE5: ' + ISNULL(CONVERT(NVARCHAR(150),@REFERENCE5),''); + + --=================================================-- Beginning safety check 1--=================================================-- + IF (SELECT count(*) + FROM [TBDEX_IN] WITH (SNAPSHOT) + WHERE [PROFILE_ID] = @PROFILE_ID AND [BATCH_ID] = @BATCH_ID + AND ISNULL([REFERENCE1],'') = ISNULL(@REFERENCE1,'') AND ISNULL([REFERENCE2],'') = ISNULL(@REFERENCE2,'') + AND ISNULL([REFERENCE3],'') = ISNULL(@REFERENCE3,'') AND ISNULL([REFERENCE4],'') = ISNULL(@REFERENCE4,'') + AND ISNULL([REFERENCE5],'') = ISNULL(@REFERENCE5,'') AND [ADDED_WHO] IN (@BATCH_CREATOR,@MY_PROCEDURE_NAME) + ) <> 0 BEGIN + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('File is already in query ([TBDEX_IN])!',''); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'WARN: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO','WARN')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'WARN', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; ELSE BEGIN + + IF (SELECT count(*) + FROM [TBDEX_TMP_PROCESS] WITH (SNAPSHOT) + WHERE [PROFILE_ID]=@PROFILE_ID AND [BATCH_ID]=@BATCH_ID AND [ADDED_WHO] in (@BATCH_CREATOR,@MY_PROCEDURE_NAME) + ) <> 0 BEGIN + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('File is already in query ([TBDEX_TMP_PROCESS])!',''); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'WARN: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO','WARN')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'WARN', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; ELSE BEGIN + + -- if there is file wasnt already processes and exported + IF (SELECT count(*) + FROM [VWDEX_OUT] + WHERE [PROFILE_ID]=@PROFILE_ID AND ISNULL([REFERENCE1],'')=ISNULL(@REFERENCE1,'') AND ISNULL([REFERENCE2],'')=ISNULL(@REFERENCE2,'') AND ISNULL([REFERENCE3],'')=ISNULL(@REFERENCE3,'') AND ISNULL([REFERENCE4],'')=ISNULL(@REFERENCE4,'') AND ISNULL([REFERENCE5],'')=ISNULL(@REFERENCE5,'') + AND ISNULL([EXTERNAL_REFERENCE1],'')=ISNULL(@EXTERNAL_REFERENCE1,'') AND ISNULL([EXTERNAL_REFERENCE2],'')=ISNULL(@EXTERNAL_REFERENCE2,'') AND ISNULL([EXTERNAL_REFERENCE3],'')=ISNULL(@EXTERNAL_REFERENCE3,'') AND ISNULL([EXTERNAL_REFERENCE4],'')=ISNULL(@EXTERNAL_REFERENCE4,'') AND ISNULL([EXTERNAL_REFERENCE5],'')=ISNULL(@EXTERNAL_REFERENCE5,'') + ) = 0 BEGIN + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('Inserting into table: [TBDEX_IN]...',''); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + --==================================================-- run insert statement --===================================================-- + INSERT INTO [TBDEX_IN]([PROFILE_ID],[BATCH_ID],[REFERENCE1],[REFERENCE2],[REFERENCE3],[REFERENCE4],[REFERENCE5], + [EXTERNAL_REFERENCE1],[EXTERNAL_REFERENCE2],[EXTERNAL_REFERENCE3],[EXTERNAL_REFERENCE4],[EXTERNAL_REFERENCE5], + [TEST_MODE],[ASYNC_MODE],[COMMENT],[ADDED_WHO],[ADDED_WHEN]) + SELECT [PROFILE_ID],[BATCH_ID],[REFERENCE1],[REFERENCE2],[REFERENCE3],[REFERENCE4],[REFERENCE5], + [EXTERNAL_REFERENCE1],[EXTERNAL_REFERENCE2],[EXTERNAL_REFERENCE3],[EXTERNAL_REFERENCE4],[EXTERNAL_REFERENCE5], + [TEST_MODE],[ASYNC_MODE],[COMMENT],[ADDED_WHO],[ADDED_WHEN] + FROM @vTBDEX_IN + WHERE [PROFILE_ID] = @PROFILE_ID + AND [BATCH_ID] = @BATCH_ID + AND ISNULL([REFERENCE1],'') = ISNULL(@REFERENCE1,'') + AND ISNULL([REFERENCE2],'') = ISNULL(@REFERENCE2,'') + AND ISNULL([REFERENCE3],'') = ISNULL(@REFERENCE3,'') + AND ISNULL([REFERENCE4],'') = ISNULL(@REFERENCE4,'') + AND ISNULL([REFERENCE5],'') = ISNULL(@REFERENCE5,'') + AND ISNULL([EXTERNAL_REFERENCE1],'') = ISNULL(@EXTERNAL_REFERENCE1,'') + AND ISNULL([EXTERNAL_REFERENCE2],'') = ISNULL(@EXTERNAL_REFERENCE2,'') + AND ISNULL([EXTERNAL_REFERENCE3],'') = ISNULL(@EXTERNAL_REFERENCE3,'') + AND ISNULL([EXTERNAL_REFERENCE4],'') = ISNULL(@EXTERNAL_REFERENCE4,'') + AND ISNULL([EXTERNAL_REFERENCE5],'') = ISNULL(@EXTERNAL_REFERENCE5,'') + ----------------------------------------------------------------------------------------------------------------------------------- + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('Insert into [TBDEX_IN] done!',''); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; ELSE BEGIN + + IF (@FORCE = 0) BEGIN + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('File was already exported ([TBDEX_OUT]), deleting from current call!',''); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'WARN: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO','WARN')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'WARN', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; ELSE BEGIN + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('File was already exported ([TBDEX_OUT]), forcing export again!',''); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'WARN: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO','WARN')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'WARN', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + --==================================================-- run insert statement --===================================================-- + INSERT INTO [TBDEX_IN]([PROFILE_ID],[BATCH_ID],[REFERENCE1],[REFERENCE2],[REFERENCE3],[REFERENCE4],[REFERENCE5], + [EXTERNAL_REFERENCE1],[EXTERNAL_REFERENCE2],[EXTERNAL_REFERENCE3],[EXTERNAL_REFERENCE4],[EXTERNAL_REFERENCE5], + [TEST_MODE],[ASYNC_MODE],[COMMENT],[ADDED_WHO],[ADDED_WHEN]) + SELECT [PROFILE_ID],[BATCH_ID],[REFERENCE1],[REFERENCE2],[REFERENCE3],[REFERENCE4],[REFERENCE5], + [EXTERNAL_REFERENCE1],[EXTERNAL_REFERENCE2],[EXTERNAL_REFERENCE3],[EXTERNAL_REFERENCE4],[EXTERNAL_REFERENCE5], + [TEST_MODE],[ASYNC_MODE],concat('Forced export!;',ISNULL([COMMENT],'')),[ADDED_WHO],[ADDED_WHEN] + FROM @vTBDEX_IN + WHERE [PROFILE_ID] = @PROFILE_ID + AND [BATCH_ID] = @BATCH_ID + AND ISNULL([REFERENCE1],'') = ISNULL(@REFERENCE1,'') + AND ISNULL([REFERENCE2],'') = ISNULL(@REFERENCE2,'') + AND ISNULL([REFERENCE3],'') = ISNULL(@REFERENCE3,'') + AND ISNULL([REFERENCE4],'') = ISNULL(@REFERENCE4,'') + AND ISNULL([REFERENCE5],'') = ISNULL(@REFERENCE5,'') + AND ISNULL([EXTERNAL_REFERENCE1],'') = ISNULL(@EXTERNAL_REFERENCE1,'') + AND ISNULL([EXTERNAL_REFERENCE2],'') = ISNULL(@EXTERNAL_REFERENCE2,'') + AND ISNULL([EXTERNAL_REFERENCE3],'') = ISNULL(@EXTERNAL_REFERENCE3,'') + AND ISNULL([EXTERNAL_REFERENCE4],'') = ISNULL(@EXTERNAL_REFERENCE4,'') + AND ISNULL([EXTERNAL_REFERENCE5],'') = ISNULL(@EXTERNAL_REFERENCE5,'') + ----------------------------------------------------------------------------------------------------------------------------------- + END; + + END; + + END; + + END; -- End safety check 1 + ----------------------------------------------------------------------------------------------------------------------------------- + + + --=================================================-- Beginning safety check 2--=================================================-- + IF (SELECT count(*) + FROM [TBDEX_TMP_PROCESS_REFERENCES] WITH (SNAPSHOT) + WHERE [PROFILE_ID] = @PROFILE_ID AND [BATCH_ID] = @BATCH_ID + AND ISNULL([REFERENCE1],'') = ISNULL(@REFERENCE1,'') AND ISNULL([REFERENCE2],'') = ISNULL(@REFERENCE2,'') + AND ISNULL([REFERENCE3],'') = ISNULL(@REFERENCE3,'') AND ISNULL([REFERENCE4],'') = ISNULL(@REFERENCE4,'') + AND ISNULL([REFERENCE5],'') = ISNULL(@REFERENCE5,'') AND [ADDED_WHO] IN (@BATCH_CREATOR,@MY_PROCEDURE_NAME) + ) <> 0 BEGIN + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('File is already in query ([TBDEX_TMP_PROCESS_REFERENCES])!',''); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'WARN: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO','WARN')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'WARN', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; ELSE BEGIN + + IF (SELECT count(*) FROM [TBDEX_TMP_PROCESS] WITH (SNAPSHOT) WHERE [PROFILE_ID]=@PROFILE_ID AND [BATCH_ID]=@BATCH_ID AND [ADDED_WHO]=@MY_PROCEDURE_NAME) <> 0 BEGIN + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('File is already in query ([TBDEX_TMP_PROCESS])!',''); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'WARN: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO','WARN')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'WARN', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; ELSE BEGIN + + -- if there is file wasnt already processes and exported + IF (SELECT count(*) + FROM [VWDEX_OUT] + WHERE [PROFILE_ID]=@PROFILE_ID AND ISNULL([REFERENCE1],'')=ISNULL(@REFERENCE1,'') AND ISNULL([REFERENCE2],'')=ISNULL(@REFERENCE2,'') AND ISNULL([REFERENCE3],'')=ISNULL(@REFERENCE3,'') AND ISNULL([REFERENCE4],'')=ISNULL(@REFERENCE4,'') AND ISNULL([REFERENCE5],'')=ISNULL(@REFERENCE5,'') + AND ISNULL([EXTERNAL_REFERENCE1],'')=ISNULL(@EXTERNAL_REFERENCE1,'') AND ISNULL([EXTERNAL_REFERENCE2],'')=ISNULL(@EXTERNAL_REFERENCE2,'') AND ISNULL([EXTERNAL_REFERENCE3],'')=ISNULL(@EXTERNAL_REFERENCE3,'') AND ISNULL([EXTERNAL_REFERENCE4],'')=ISNULL(@EXTERNAL_REFERENCE4,'') AND ISNULL([EXTERNAL_REFERENCE5],'')=ISNULL(@EXTERNAL_REFERENCE5,'') + ) = 0 BEGIN + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('Inserting into table: [TBDEX_TMP_PROCESS_REFERENCES]...',''); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + --==================================================-- run insert statement --===================================================-- + INSERT INTO [TBDEX_TMP_PROCESS_REFERENCES]([PROFILE_ID],[BATCH_ID],[REFERENCE1],[REFERENCE2],[REFERENCE3],[REFERENCE4],[REFERENCE5], + [EXTERNAL_REFERENCE1],[EXTERNAL_REFERENCE2],[EXTERNAL_REFERENCE3],[EXTERNAL_REFERENCE4],[EXTERNAL_REFERENCE5], + [COMMENT],[ADDED_WHO],[ADDED_WHEN]) + SELECT [PROFILE_ID],[BATCH_ID],[REFERENCE1],[REFERENCE2],[REFERENCE3],[REFERENCE4],[REFERENCE5], + [EXTERNAL_REFERENCE1],[EXTERNAL_REFERENCE2],[EXTERNAL_REFERENCE3],[EXTERNAL_REFERENCE4],[EXTERNAL_REFERENCE5], + [COMMENT],[ADDED_WHO],[ADDED_WHEN] + FROM @vTBDEX_IN + WHERE [PROFILE_ID] = @PROFILE_ID + AND [BATCH_ID] = @BATCH_ID + AND ISNULL([REFERENCE1],'') = ISNULL(@REFERENCE1,'') + AND ISNULL([REFERENCE2],'') = ISNULL(@REFERENCE2,'') + AND ISNULL([REFERENCE3],'') = ISNULL(@REFERENCE3,'') + AND ISNULL([REFERENCE4],'') = ISNULL(@REFERENCE4,'') + AND ISNULL([REFERENCE5],'') = ISNULL(@REFERENCE5,'') + AND ISNULL([EXTERNAL_REFERENCE1],'') = ISNULL(@EXTERNAL_REFERENCE1,'') + AND ISNULL([EXTERNAL_REFERENCE2],'') = ISNULL(@EXTERNAL_REFERENCE2,'') + AND ISNULL([EXTERNAL_REFERENCE3],'') = ISNULL(@EXTERNAL_REFERENCE3,'') + AND ISNULL([EXTERNAL_REFERENCE4],'') = ISNULL(@EXTERNAL_REFERENCE4,'') + AND ISNULL([EXTERNAL_REFERENCE5],'') = ISNULL(@EXTERNAL_REFERENCE5,'') + ----------------------------------------------------------------------------------------------------------------------------------- + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('Insert into [TBDEX_TMP_PROCESS_REFERENCES] done!',''); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; ELSE BEGIN + + IF (@FORCE = 0) BEGIN + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('File was already exported ([TBDEX_OUT]), deleting from current call!',''); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'WARN: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO','WARN')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'WARN', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; ELSE BEGIN + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('File was already exported ([TBDEX_OUT]), forcing export again!',''); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'WARN: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO','WARN')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'WARN', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + --==================================================-- run insert statement --===================================================-- + INSERT INTO [TBDEX_TMP_PROCESS_REFERENCES]([PROFILE_ID],[BATCH_ID],[REFERENCE1],[REFERENCE2],[REFERENCE3],[REFERENCE4],[REFERENCE5], + [EXTERNAL_REFERENCE1],[EXTERNAL_REFERENCE2],[EXTERNAL_REFERENCE3],[EXTERNAL_REFERENCE4],[EXTERNAL_REFERENCE5], + [COMMENT],[ADDED_WHO],[ADDED_WHEN]) + SELECT [PROFILE_ID],[BATCH_ID],[REFERENCE1],[REFERENCE2],[REFERENCE3],[REFERENCE4],[REFERENCE5], + [EXTERNAL_REFERENCE1],[EXTERNAL_REFERENCE2],[EXTERNAL_REFERENCE3],[EXTERNAL_REFERENCE4],[EXTERNAL_REFERENCE5], + concat('Forced export!;',ISNULL([COMMENT],'')),[ADDED_WHO],[ADDED_WHEN] + FROM @vTBDEX_IN + WHERE [PROFILE_ID] = @PROFILE_ID + AND [BATCH_ID] = @BATCH_ID + AND ISNULL([REFERENCE1],'') = ISNULL(@REFERENCE1,'') + AND ISNULL([REFERENCE2],'') = ISNULL(@REFERENCE2,'') + AND ISNULL([REFERENCE3],'') = ISNULL(@REFERENCE3,'') + AND ISNULL([REFERENCE4],'') = ISNULL(@REFERENCE4,'') + AND ISNULL([REFERENCE5],'') = ISNULL(@REFERENCE5,'') + AND ISNULL([EXTERNAL_REFERENCE1],'') = ISNULL(@EXTERNAL_REFERENCE1,'') + AND ISNULL([EXTERNAL_REFERENCE2],'') = ISNULL(@EXTERNAL_REFERENCE2,'') + AND ISNULL([EXTERNAL_REFERENCE3],'') = ISNULL(@EXTERNAL_REFERENCE3,'') + AND ISNULL([EXTERNAL_REFERENCE4],'') = ISNULL(@EXTERNAL_REFERENCE4,'') + AND ISNULL([EXTERNAL_REFERENCE5],'') = ISNULL(@EXTERNAL_REFERENCE5,'') + ----------------------------------------------------------------------------------------------------------------------------------- + END; + + END; + + END; + + END; -- End safety check 2 + ----------------------------------------------------------------------------------------------------------------------------------- + + FETCH NEXT FROM CURSOR_INPUT INTO @REFERENCE1,@REFERENCE2,@REFERENCE3,@REFERENCE4,@REFERENCE5,@EXTERNAL_REFERENCE1,@EXTERNAL_REFERENCE2,@EXTERNAL_REFERENCE3,@EXTERNAL_REFERENCE4,@EXTERNAL_REFERENCE5; + END + CLOSE CURSOR_INPUT; + DEALLOCATE CURSOR_INPUT; + + + --===============================================-- Prepare dynamic export table --==============================================-- + SET @TBDEX_TMP_TABLE_SCHEMA_AND_NAME = CASE + WHEN (LEN(LTRIM(RTRIM(@TBDEX_TMP_TABLE_SCHEMA))) > 0) AND (LEFT(@TBDEX_TMP_TABLE_NAME,1) <> '#') + THEN QUOTENAME(@TBDEX_TMP_TABLE_SCHEMA) + '.' + QUOTENAME(@TBDEX_TMP_TABLE_NAME) + ELSE @TBDEX_TMP_TABLE_NAME + END; + + SET @TBDEX_TMP_TABLE_DROP_QUERY = 'SET ANSI_NULLS ON; + SET QUOTED_IDENTIFIER ON; + IF OBJECT_ID(''' + 'tempdb..' + @TBDEX_TMP_TABLE_SCHEMA_AND_NAME + ''',''U'') IS NOT NULL + DROP TABLE ' + 'tempdb..' + @TBDEX_TMP_TABLE_SCHEMA_AND_NAME + ';' + + SET @TBDEX_TMP_TABLE_COLUMNS = (SELECT STUFF((SELECT CONCAT(', ',QUOTENAME(REPLACE(REPLACE(ISNULL([COS].[PATH_OR_COLUMN],''),',','_'),'-','_')),' ') + FROM [TBDEX_CFG_OUT_STRUCTURE] AS [COS] + WHERE [COS].[ACTIVE] = @ACTIVE_FLAG AND [COS].[EXPORT_TYPE] = @EXPORT_TYPE AND [COS].[PROFILE_ID] = @PROFILE_ID + AND [COS].[LANGUAGE] in (REPLACE(@LANGUAGE,'-','_'),REPLACE(@LANGUAGE,'_','-')) + ORDER BY [COS].[SEQUENCE] ASC + FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,2,'')); + + SET @TBDEX_TMP_TABLE_COLUMNS = REPLACE(concat( + '[PROFILE_ID], ', + '[BATCH_ID], ', + @TBDEX_TMP_TABLE_COLUMNS),',,',','); + + SET @TBDEX_TMP_TABLE_CREATE_QUERY = (SELECT STUFF((SELECT CONCAT(', ',QUOTENAME(REPLACE(REPLACE(ISNULL([COS].[PATH_OR_COLUMN],''),',','_'),'-','_')),' ', + LTRIM(RTRIM(ISNULL([COS].[DATA_TYPE],'NVARCHAR(100)')))) + FROM [TBDEX_CFG_OUT_STRUCTURE] AS [COS] + WHERE [COS].[ACTIVE] = @ACTIVE_FLAG AND [COS].[EXPORT_TYPE] = @EXPORT_TYPE AND [COS].[PROFILE_ID] = @PROFILE_ID + AND [COS].[LANGUAGE] in (REPLACE(@LANGUAGE,'-','_'),REPLACE(@LANGUAGE,'_','-')) + ORDER BY [COS].[SEQUENCE] ASC + FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,2,'')); + + SET @TBDEX_TMP_TABLE_CREATE_QUERY = REPLACE(concat( + '[GUID] [bigint] IDENTITY(1,1) NOT NULL, ', + '[PROFILE_ID] [bigint] NOT NULL, ', + '[BATCH_ID] [nvarchar](25) NOT NULL, ', + @TBDEX_TMP_TABLE_CREATE_QUERY),',,',','); + --MEMORY_OPTIMIZED dont work if data comes from a other db + --SET @TBDEX_TMP_TABLE_CREATE_QUERY = 'SET ANSI_NULLS ON; + -- SET QUOTED_IDENTIFIER ON; + -- CREATE TABLE ' + @TBDEX_TMP_TABLE_SCHEMA_AND_NAME + ' + -- (' + @TBDEX_TMP_TABLE_CREATE_QUERY + ', + -- CONSTRAINT [PK_'+ @TBDEX_TMP_TABLE_NAME +'] PRIMARY KEY NONCLUSTERED + -- ([GUID] ASC) + -- ) WITH ( MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_ONLY );'; + + SET @TBDEX_TMP_TABLE_CREATE_QUERY = 'SET ANSI_NULLS ON; + SET QUOTED_IDENTIFIER ON; + CREATE TABLE ' + @TBDEX_TMP_TABLE_SCHEMA_AND_NAME + ' + (' + @TBDEX_TMP_TABLE_CREATE_QUERY + ');'; + + SET @TBDEX_TMP_TABLE_DROP_QUERY = REPLACE(@TBDEX_TMP_TABLE_DROP_QUERY,', ,',','); + SET @TBDEX_TMP_TABLE_COLUMNS = REPLACE(@TBDEX_TMP_TABLE_COLUMNS,', ,',','); + SET @TBDEX_TMP_TABLE_CREATE_QUERY = REPLACE(@TBDEX_TMP_TABLE_CREATE_QUERY,', ,',','); + ----------------------------------------------------------------------------------------------------------------------------------- + + + --==================================================-- Handle placeholders --==================================================-- + PRINT ''; + PRINT 'Replacing placeholders...'; + + SET @TBDEX_TMP_TABLE_CREATE_QUERY = REPLACE(@TBDEX_TMP_TABLE_CREATE_QUERY,'%PROFILE_ID%',ISNULL(@PROFILE_ID,'')); + SET @TBDEX_TMP_TABLE_CREATE_QUERY = REPLACE(@TBDEX_TMP_TABLE_CREATE_QUERY,'%TEST_MODE%',ISNULL(@TEST_MODE,'')); + SET @TBDEX_TMP_TABLE_CREATE_QUERY = REPLACE(@TBDEX_TMP_TABLE_CREATE_QUERY,'%ASYNC_MODE%',ISNULL(@ASYNC_MODE,'')); + SET @TBDEX_TMP_TABLE_CREATE_QUERY = REPLACE(@TBDEX_TMP_TABLE_CREATE_QUERY,'%BATCH_ID%',ISNULL(@BATCH_ID,'')); + SET @TBDEX_TMP_TABLE_CREATE_QUERY = REPLACE(@TBDEX_TMP_TABLE_CREATE_QUERY,'%BATCH_CREATOR%',ISNULL(@BATCH_CREATOR,'')); + SET @TBDEX_TMP_TABLE_CREATE_QUERY = REPLACE(@TBDEX_TMP_TABLE_CREATE_QUERY,'%LANGUAGE%',ISNULL(@LANGUAGE,'')); + SET @TBDEX_TMP_TABLE_CREATE_QUERY = REPLACE(@TBDEX_TMP_TABLE_CREATE_QUERY,'%LOG_LEVEL%',ISNULL(@LOG_LEVEL,'')); + SET @TBDEX_TMP_TABLE_CREATE_QUERY = REPLACE(@TBDEX_TMP_TABLE_CREATE_QUERY,'%START_QUERY%',ISNULL(@START_QUERY,'')); + SET @TBDEX_TMP_TABLE_CREATE_QUERY = REPLACE(@TBDEX_TMP_TABLE_CREATE_QUERY,'%START_QUERY_VAR1%',ISNULL(@START_QUERY_VAR1,'')); + SET @TBDEX_TMP_TABLE_CREATE_QUERY = REPLACE(@TBDEX_TMP_TABLE_CREATE_QUERY,'%START_QUERY_VAR2%',ISNULL(@START_QUERY_VAR2,'')); + SET @TBDEX_TMP_TABLE_CREATE_QUERY = REPLACE(@TBDEX_TMP_TABLE_CREATE_QUERY,'%START_QUERY_VAR3%',ISNULL(@START_QUERY_VAR3,'')); + SET @TBDEX_TMP_TABLE_CREATE_QUERY = REPLACE(@TBDEX_TMP_TABLE_CREATE_QUERY,'%START_QUERY_VAR4%',ISNULL(@START_QUERY_VAR4,'')); + SET @TBDEX_TMP_TABLE_CREATE_QUERY = REPLACE(@TBDEX_TMP_TABLE_CREATE_QUERY,'%START_QUERY_VAR5%',ISNULL(@START_QUERY_VAR5,'')); + SET @TBDEX_TMP_TABLE_CREATE_QUERY = REPLACE(@TBDEX_TMP_TABLE_CREATE_QUERY,'%FORCE%',ISNULL(@FORCE,'')); + SET @TBDEX_TMP_TABLE_CREATE_QUERY = REPLACE(@TBDEX_TMP_TABLE_CREATE_QUERY,'%MY_PROCEDURE_NAME%',ISNULL(@MY_PROCEDURE_NAME,'')); + SET @TBDEX_TMP_TABLE_CREATE_QUERY = REPLACE(@TBDEX_TMP_TABLE_CREATE_QUERY,'%PROFILE_NAME%',ISNULL(@PROFILE_NAME,'')); + SET @TBDEX_TMP_TABLE_CREATE_QUERY = REPLACE(@TBDEX_TMP_TABLE_CREATE_QUERY,'%MANDANTOR%',ISNULL(@MANDANTOR,'')); + SET @TBDEX_TMP_TABLE_CREATE_QUERY = REPLACE(@TBDEX_TMP_TABLE_CREATE_QUERY,'%EXPORT_TYPE%',ISNULL(@EXPORT_TYPE,'')); + SET @TBDEX_TMP_TABLE_CREATE_QUERY = REPLACE(@TBDEX_TMP_TABLE_CREATE_QUERY,'%REFERENCE1%',ISNULL(@REFERENCE1,'')); + SET @TBDEX_TMP_TABLE_CREATE_QUERY = REPLACE(@TBDEX_TMP_TABLE_CREATE_QUERY,'%REFERENCE2%',ISNULL(@REFERENCE2,'')); + SET @TBDEX_TMP_TABLE_CREATE_QUERY = REPLACE(@TBDEX_TMP_TABLE_CREATE_QUERY,'%REFERENCE3%',ISNULL(@REFERENCE3,'')); + SET @TBDEX_TMP_TABLE_CREATE_QUERY = REPLACE(@TBDEX_TMP_TABLE_CREATE_QUERY,'%REFERENCE4%',ISNULL(@REFERENCE4,'')); + SET @TBDEX_TMP_TABLE_CREATE_QUERY = REPLACE(@TBDEX_TMP_TABLE_CREATE_QUERY,'%REFERENCE5%',ISNULL(@REFERENCE5,'')); + + DECLARE CURSOR_PLACEHOLDER CURSOR + LOCAL FAST_FORWARD FOR + SELECT [PLACEHOLDER_NAME] as 'Placeholder_Name', [PLACEHOLDER] as 'Placeholder' + FROM [TBDEX_CFG_RESOURCES] + WHERE [PROFILE_ID] IN (0,@PROFILE_ID) AND [ACTIVE] = @ACTIVE_FLAG AND LTRIM(RTRIM([PLACEHOLDER_TYPE])) = @PLACEHOLDER_TYPE + ORDER BY [SEQUENCE] ASC; + + OPEN CURSOR_PLACEHOLDER + FETCH NEXT FROM CURSOR_PLACEHOLDER INTO @PLACEHOLDER_NAME,@PLACEHOLDER; + WHILE @@FETCH_STATUS = 0 + BEGIN + + SET @TBDEX_TMP_TABLE_CREATE_QUERY = REPLACE(@TBDEX_TMP_TABLE_CREATE_QUERY,concat('%',@PLACEHOLDER_NAME,'%'),ISNULL(@PLACEHOLDER,'')); + + FETCH NEXT FROM CURSOR_PLACEHOLDER INTO @PLACEHOLDER_NAME,@PLACEHOLDER; + END + CLOSE CURSOR_PLACEHOLDER; + DEALLOCATE CURSOR_PLACEHOLDER; + ----------------------------------------------------------------------------------------------------------------------------------- + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('The complete "@TBDEX_TMP_TABLE_CREATE_QUERY" query: ',char(13),@TBDEX_TMP_TABLE_CREATE_QUERY); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + + --===================================================-- Update process table --==================================================-- + UPDATE [TBDEX_TMP_PROCESS] + SET [TBDEX_TMP_TABLE_SCHEMA] = @TBDEX_TMP_TABLE_SCHEMA, + [TBDEX_TMP_TABLE_NAME] = @TBDEX_TMP_TABLE_NAME, + [TBDEX_TMP_TABLE_SCHEMA_AND_NAME] = @TBDEX_TMP_TABLE_SCHEMA_AND_NAME, + [TBDEX_TMP_TABLE_COLUMNS] = @TBDEX_TMP_TABLE_COLUMNS, + [TBDEX_TMP_TABLE_DROP_QUERY] = @TBDEX_TMP_TABLE_DROP_QUERY, + [TBDEX_TMP_TABLE_CREATE_QUERY] = @TBDEX_TMP_TABLE_CREATE_QUERY, + [CHANGED_WHO] = @BATCH_CREATOR, + [CHANGED_WHEN] = GetDate() + WHERE [PROFILE_ID] = @PROFILE_ID + AND [BATCH_ID] = @BATCH_ID + AND [ADDED_WHO] = @BATCH_CREATOR + ----------------------------------------------------------------------------------------------------------------------------------- + + + --===================================================-- COMMIT TRANSACTION --====================================================-- + IF (@@TRANCOUNT > 0) BEGIN + COMMIT TRANSACTION; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + + --======================================================-- Cleaning up --======================================================-- + IF (@TEST_MODE = 1) BEGIN + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('Showing content of table [TBDEX_IN] before cleanup',''); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --=====================================================-- Showing result --======================================================-- + SELECT [GUID], + [PROFILE_ID], + [BATCH_ID], + [REFERENCE1], + [REFERENCE2], + [REFERENCE3], + [REFERENCE4], + [REFERENCE5], + [EXTERNAL_REFERENCE1], + [EXTERNAL_REFERENCE2], + [EXTERNAL_REFERENCE3], + [EXTERNAL_REFERENCE4], + [EXTERNAL_REFERENCE5], + [TEST_MODE], + [ASYNC_MODE], + [COMMENT], + [ADDED_WHO], + [ADDED_WHEN] + FROM [TBDEX_IN] WITH (SNAPSHOT)-- In test mode show result AND DO NOT use dirty reads. + WHERE [PROFILE_ID] = @PROFILE_ID AND [BATCH_ID] = @BATCH_ID AND [TEST_MODE] = @TEST_MODE + AND [ASYNC_MODE] = @ASYNC_MODE AND [ADDED_WHO] IN (@BATCH_CREATOR,@MY_PROCEDURE_NAME); + ----------------------------------------------------------------------------------------------------------------------------------- + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('Cleaning up Query table because of TEST_MODE is enabled!',''); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'WARN: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO','WARN')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'WARN', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + --=======================================================-- Cleaning up --=======================================================-- + DELETE FROM [TBDEX_IN] + WHERE [PROFILE_ID] = @PROFILE_ID AND [BATCH_ID] = @BATCH_ID AND [TEST_MODE] = @TEST_MODE + AND [ASYNC_MODE] = @ASYNC_MODE AND [ADDED_WHO] IN (@BATCH_CREATOR,@MY_PROCEDURE_NAME); + ----------------------------------------------------------------------------------------------------------------------------------- + + END; ELSE BEGIN + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('Dont cleaning up Query table because of TEST_MODE is disabled!',''); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT ''; + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO','WARN')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'WARN', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('END PROCEDURE [',@MY_PROCEDURE_NAME,'] @ ',CONVERT(NVARCHAR(50),GETDATE(),120)); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT char(13) + @RETURN_STATUS_TEXT; + PRINT '===================================================================================================='; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + RETURN @RETURN_STATUS; + +END TRY BEGIN CATCH + + --====================================================-- exception / error --====================================================-- + IF (@@TRANCOUNT > 0) BEGIN + ROLLBACK TRANSACTION; + END; + + PRINT char(13) + 'ERROR: ' + @RETURN_STATUS_TEXT + '; ' + @RETURN_ERROR_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO','WARN','ERROR')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'ERROR', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = CASE WHEN @RETURN_STATUS > 50000 THEN @RETURN_STATUS ELSE 50000 END; + SET @RETURN_STATUS_TEXT = concat(char(13),'END PROCEDURE [',@MY_PROCEDURE_NAME,'] @ ',CONVERT(NVARCHAR(50),GETDATE(),120)); + SET @RETURN_ERROR_TEXT = concat('ERROR MESSAGE: ',CONVERT(NVARCHAR(500),ERROR_MESSAGE())); + + PRINT 'ERROR IN PROCEDURE: [' + @MY_PROCEDURE_NAME + ']' + char(13) + @RETURN_ERROR_TEXT; + PRINT @RETURN_STATUS_TEXT; + PRINT '===================================================================================================='; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO','WARN','ERROR')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'ERROR', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + RETURN @RETURN_STATUS; + +END CATCH; +GO \ No newline at end of file diff --git a/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_GET_INPUT_CONTENT].sql b/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_GET_INPUT_CONTENT].sql new file mode 100644 index 0000000..78e8556 --- /dev/null +++ b/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_GET_INPUT_CONTENT].sql @@ -0,0 +1,593 @@ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +-- [PRDEX_GET_INPUT_CONTENT] +-- ================================================================= +-- Sucht alle noch nicht exportierten Dokumente bzw. Daten zusammen +-- +-- Returns: INTEGER; 0 = ok; 0 <> nicht ok +-- ================================================================= +-- Copyright (c) 2025 by Digital Data GmbH +-- +-- Digital Data GmbH � Ludwig-Rinn-Strasse 16 � D-35452 Heuchelheim +-- Tel.: 0641/202360 � E-Mail: info-flow@digitaldata.works +-- ================================================================= +-- Creation Date / Author: 01.08.2025 / MK +-- Version Date / Editor: 01.08.2025 / MK +-- Version Number: 1.0.0.0 +-- ================================================================= +-- History: +-- 01.08.2025 / MK - First Version + +CREATE OR ALTER PROCEDURE [dbo].[PRDEX_GET_INPUT_CONTENT]( + @pPROFILE_ID BIGINT, + @pTEST_MODE BIT, + @pASYNC_MODE BIT, + @pBATCH_ID NVARCHAR(25), + @pBATCH_CREATOR NVARCHAR(50), + @pLANGUAGE NVARCHAR(10), + @pLOG_LEVEL NVARCHAR(25), + @pSTART_QUERY NVARCHAR(MAX), + @pSTART_QUERY_VAR1 NVARCHAR(50), + @pSTART_QUERY_VAR2 NVARCHAR(50), + @pSTART_QUERY_VAR3 NVARCHAR(50), + @pSTART_QUERY_VAR4 NVARCHAR(50), + @pSTART_QUERY_VAR5 NVARCHAR(50), + @pMAIN_QUERY NVARCHAR(MAX), + @pMAIN_QUERY_VAR1 NVARCHAR(50), + @pMAIN_QUERY_VAR2 NVARCHAR(50), + @pMAIN_QUERY_VAR3 NVARCHAR(50), + @pMAIN_QUERY_VAR4 NVARCHAR(50), + @pMAIN_QUERY_VAR5 NVARCHAR(50), + @pEND_QUERY NVARCHAR(MAX), + @pEND_QUERY_VAR1 NVARCHAR(50), + @pEND_QUERY_VAR2 NVARCHAR(50), + @pEND_QUERY_VAR3 NVARCHAR(50), + @pEND_QUERY_VAR4 NVARCHAR(50), + @pEND_QUERY_VAR5 NVARCHAR(50), + @pFORCE BIT, + @pPROFILE_NAME NVARCHAR(50), + @pMANDANTOR NVARCHAR(50), + @pEXPORT_TYPE NVARCHAR(50), + @pEXPORT_NUMBER_SCHEMA NVARCHAR(25), + @pDEFAULT_DATA_SEPARATOR NVARCHAR(10), + @pTBDEX_TMP_TABLE_SCHEMA SYSNAME, + @pTBDEX_TMP_TABLE_NAME SYSNAME, + @pTBDEX_TMP_TABLE_SCHEMA_AND_NAME NVARCHAR(150), + @pTBDEX_TMP_TABLE_COLUMNS NVARCHAR(MAX), + @pTBDEX_TMP_TABLE_DROP_QUERY NVARCHAR(MAX), + @pTBDEX_TMP_TABLE_CREATE_QUERY NVARCHAR(MAX), + @pTBDEX_TMP_TABLE_INSERT_QUERY NVARCHAR(MAX), + @pREFERENCE1 NVARCHAR(150), + @pREFERENCE2 NVARCHAR(150), + @pREFERENCE3 NVARCHAR(150), + @pREFERENCE4 NVARCHAR(150), + @pREFERENCE5 NVARCHAR(150), + @pEXTERNAL_REFERENCE1 NVARCHAR(250), + @pEXTERNAL_REFERENCE2 NVARCHAR(250), + @pEXTERNAL_REFERENCE3 NVARCHAR(250), + @pEXTERNAL_REFERENCE4 NVARCHAR(250), + @pEXTERNAL_REFERENCE5 NVARCHAR(250) +) +AS +BEGIN TRY + + SET NOCOUNT ON; + + -- declare new vars because of parameter sniffing + DECLARE @PROFILE_ID BIGINT = @pPROFILE_ID, + @TEST_MODE BIT = @pTEST_MODE, + @ASYNC_MODE BIT = @pASYNC_MODE, + @BATCH_ID NVARCHAR(25) = @pBATCH_ID, + @BATCH_CREATOR NVARCHAR(128) = ISNULL(@pBATCH_CREATOR,OBJECT_NAME(@@PROCID)), + @LANGUAGE NVARCHAR(10) = @pLANGUAGE, + @LOG_LEVEL NVARCHAR(25) = UPPER(ISNULL(@pLOG_LEVEL,'INFO')), + @START_QUERY NVARCHAR(500) = @pSTART_QUERY, + @START_QUERY_VAR1 NVARCHAR(50) = @pSTART_QUERY_VAR1, + @START_QUERY_VAR2 NVARCHAR(50) = @pSTART_QUERY_VAR2, + @START_QUERY_VAR3 NVARCHAR(50) = @pSTART_QUERY_VAR3, + @START_QUERY_VAR4 NVARCHAR(50) = @pSTART_QUERY_VAR4, + @START_QUERY_VAR5 NVARCHAR(50) = @pSTART_QUERY_VAR5, + @MAIN_QUERY NVARCHAR(500) = @pMAIN_QUERY, + @MAIN_QUERY_VAR1 NVARCHAR(50) = @pMAIN_QUERY_VAR1, + @MAIN_QUERY_VAR2 NVARCHAR(50) = @pMAIN_QUERY_VAR2, + @MAIN_QUERY_VAR3 NVARCHAR(50) = @pMAIN_QUERY_VAR3, + @MAIN_QUERY_VAR4 NVARCHAR(50) = @pMAIN_QUERY_VAR4, + @MAIN_QUERY_VAR5 NVARCHAR(50) = @pMAIN_QUERY_VAR5, + @END_QUERY NVARCHAR(500) = @pEND_QUERY, + @END_QUERY_VAR1 NVARCHAR(50) = @pEND_QUERY_VAR1, + @END_QUERY_VAR2 NVARCHAR(50) = @pEND_QUERY_VAR2, + @END_QUERY_VAR3 NVARCHAR(50) = @pEND_QUERY_VAR3, + @END_QUERY_VAR4 NVARCHAR(50) = @pEND_QUERY_VAR4, + @END_QUERY_VAR5 NVARCHAR(50) = @pEND_QUERY_VAR5, + @FORCE BIT = @pFORCE, + @PROFILE_NAME NVARCHAR(50) = @pPROFILE_NAME, + @MANDANTOR NVARCHAR(50) = @pMANDANTOR, + @EXPORT_TYPE NVARCHAR(50) = @pEXPORT_TYPE, + @EXPORT_NUMBER_SCHEMA NVARCHAR(25) = @pEXPORT_NUMBER_SCHEMA, + @DEFAULT_DATA_SEPARATOR NVARCHAR(10) = @pDEFAULT_DATA_SEPARATOR, + @TBDEX_TMP_TABLE_SCHEMA SYSNAME = @pTBDEX_TMP_TABLE_SCHEMA, + @TBDEX_TMP_TABLE_NAME SYSNAME = @pTBDEX_TMP_TABLE_NAME, + @TBDEX_TMP_TABLE_SCHEMA_AND_NAME NVARCHAR(150) = @pTBDEX_TMP_TABLE_SCHEMA_AND_NAME, + @TBDEX_TMP_TABLE_COLUMNS NVARCHAR(MAX) = @pTBDEX_TMP_TABLE_COLUMNS, + @TBDEX_TMP_TABLE_DROP_QUERY NVARCHAR(MAX) = @pTBDEX_TMP_TABLE_DROP_QUERY, + @TBDEX_TMP_TABLE_CREATE_QUERY NVARCHAR(MAX) = @pTBDEX_TMP_TABLE_CREATE_QUERY, + @TBDEX_TMP_TABLE_INSERT_QUERY NVARCHAR(MAX) = @pTBDEX_TMP_TABLE_INSERT_QUERY, + @REFERENCE1 NVARCHAR(150) = @pREFERENCE1, + @REFERENCE2 NVARCHAR(150) = @pREFERENCE2, + @REFERENCE3 NVARCHAR(150) = @pREFERENCE3, + @REFERENCE4 NVARCHAR(150) = @pREFERENCE4, + @REFERENCE5 NVARCHAR(150) = @pREFERENCE5, + @EXTERNAL_REFERENCE1 NVARCHAR(250) = @pEXTERNAL_REFERENCE1, + @EXTERNAL_REFERENCE2 NVARCHAR(250) = @pEXTERNAL_REFERENCE2, + @EXTERNAL_REFERENCE3 NVARCHAR(250) = @pEXTERNAL_REFERENCE3, + @EXTERNAL_REFERENCE4 NVARCHAR(250) = @pEXTERNAL_REFERENCE4, + @EXTERNAL_REFERENCE5 NVARCHAR(250) = @pEXTERNAL_REFERENCE5; + + -- declare runtime vars + DECLARE @MY_PROCEDURE_NAME NVARCHAR(128) = OBJECT_NAME(@@PROCID); + DECLARE @ACTIVE_FLAG BIT = 1, + @INACTIVE_FLAG BIT = 0, + @ROW_COUNT0 SMALLINT = 0, + @ROW_COUNT1 SMALLINT = 0, + @ROW_COUNT2 SMALLINT = 0, + @ROW_COUNTER1 SMALLINT = 0, + @ROW_COUNTER2 SMALLINT = 0, + @ROW_COUNT_SUM1 SMALLINT = 0, + @PLACEHOLDER_NAME NVARCHAR(50) = NULL, + @PLACEHOLDER NVARCHAR(MAX) = NULL, + @PLACEHOLDER_TYPE NVARCHAR(10) = 'CONST', + @TBDEX_IN_GUID BIGINT = 0, + @TBDEX_IN_PROFILE_ID SMALLINT = 0, + @TBDEX_IN_BATCH_ID NVARCHAR(25) = NULL, + @TBDEX_IN_REFERENCE1 NVARCHAR(150) = NULL, + @TBDEX_IN_REFERENCE2 NVARCHAR(150) = NULL, + @TBDEX_IN_REFERENCE3 NVARCHAR(150) = NULL, + @TBDEX_IN_REFERENCE4 NVARCHAR(150) = NULL, + @TBDEX_IN_REFERENCE5 NVARCHAR(150) = NULL, + @TBDEX_IN_EXTERNAL_REFERENCE1 NVARCHAR(250) = NULL, + @TBDEX_IN_EXTERNAL_REFERENCE2 NVARCHAR(250) = NULL, + @TBDEX_IN_EXTERNAL_REFERENCE3 NVARCHAR(250) = NULL, + @TBDEX_IN_EXTERNAL_REFERENCE4 NVARCHAR(250) = NULL, + @TBDEX_IN_EXTERNAL_REFERENCE5 NVARCHAR(250) = NULL, + @TBDEX_IN_TEST_MODE BIT = 0, + @TBDEX_IN_ASYNC_MODE BIT = 0, + @TBDEX_IN_COMMENT NVARCHAR(150) = NULL, + @TBDEX_IN_ADDED_WHO NVARCHAR(50) = NULL, + @TBDEX_IN_ADDED_WHEN DATETIME = NULL, + @TBDEX_TMP_QUERY_GUID BIGINT = 0, + @TBDEX_TMP_QUERY_PROFILE_ID SMALLINT = 0, + @TBDEX_TMP_QUERY_BATCH_ID NVARCHAR(25) = NULL, + @TBDEX_TMP_QUERY_QUERY NVARCHAR(MAX) = NULL, + @TBDEX_TMP_QUERY_COMMENT NVARCHAR(150) = NULL, + @TBDEX_TMP_QUERY_ADDED_WHO NVARCHAR(50) = NULL, + @TBDEX_TMP_QUERY_ADDED_WHEN DATETIME = NULL, + @RETURN_STATUS INT = 0, + @RETURN_STATUS_TEXT NVARCHAR(MAX) = concat('START PROCEDURE [',@MY_PROCEDURE_NAME,'] @ ',CONVERT(varchar(50),GETDATE(),120)), + @RETURN_ERROR_TEXT NVARCHAR(MAX) = ''; + + PRINT '===================================================================================================='; + PRINT @RETURN_STATUS_TEXT; + PRINT ''; + PRINT 'PARAMETER01 - @PROFILE_ID: ' + CONVERT(NVARCHAR(50),ISNULL(@PROFILE_ID,'')); + PRINT 'PARAMETER02 - @TEST_MODE: ' + CONVERT(NVARCHAR(50),ISNULL(@TEST_MODE,'')); + PRINT 'PARAMETER03 - @ASYNC_MODE: ' + CONVERT(NVARCHAR(50),ISNULL(@ASYNC_MODE,'')); + PRINT 'PARAMETER04 - @BATCH_ID: ' + CONVERT(NVARCHAR(50),ISNULL(@BATCH_ID,'')); + PRINT 'PARAMETER05 - @BATCH_CREATOR: ' + CONVERT(NVARCHAR(50),ISNULL(@BATCH_CREATOR,'')); + PRINT 'PARAMETER06 - @LANGUAGE: ' + CONVERT(NVARCHAR(50),ISNULL(@LANGUAGE,'')); + PRINT 'PARAMETER07 - @LOG_LEVEL: ' + CONVERT(NVARCHAR(50),ISNULL(@LOG_LEVEL,'')); + PRINT 'PARAMETER08 - @START_QUERY: ' + CONVERT(NVARCHAR(50),ISNULL(@START_QUERY,'')); + PRINT 'PARAMETER09 - @START_QUERY_VAR1: ' + CONVERT(NVARCHAR(50),ISNULL(@START_QUERY_VAR1,'')); + PRINT 'PARAMETER10 - @START_QUERY_VAR2: ' + CONVERT(NVARCHAR(50),ISNULL(@START_QUERY_VAR2,'')); + PRINT 'PARAMETER11 - @START_QUERY_VAR3: ' + CONVERT(NVARCHAR(50),ISNULL(@START_QUERY_VAR3,'')); + PRINT 'PARAMETER12 - @START_QUERY_VAR4: ' + CONVERT(NVARCHAR(50),ISNULL(@START_QUERY_VAR4,'')); + PRINT 'PARAMETER13 - @START_QUERY_VAR5: ' + CONVERT(NVARCHAR(50),ISNULL(@START_QUERY_VAR5,'')); + PRINT 'PARAMETER14 - @MAIN_QUERY: ' + CONVERT(NVARCHAR(50),ISNULL(@MAIN_QUERY,'')); + PRINT 'PARAMETER15 - @MAIN_QUERY_VAR1: ' + CONVERT(NVARCHAR(50),ISNULL(@MAIN_QUERY_VAR1,'')); + PRINT 'PARAMETER16 - @MAIN_QUERY_VAR2: ' + CONVERT(NVARCHAR(50),ISNULL(@MAIN_QUERY_VAR2,'')); + PRINT 'PARAMETER17 - @MAIN_QUERY_VAR3: ' + CONVERT(NVARCHAR(50),ISNULL(@MAIN_QUERY_VAR3,'')); + PRINT 'PARAMETER18 - @MAIN_QUERY_VAR4: ' + CONVERT(NVARCHAR(50),ISNULL(@MAIN_QUERY_VAR4,'')); + PRINT 'PARAMETER19 - @MAIN_QUERY_VAR5: ' + CONVERT(NVARCHAR(50),ISNULL(@MAIN_QUERY_VAR5,'')); + PRINT 'PARAMETER20 - @END_QUERY: ' + CONVERT(NVARCHAR(50),ISNULL(@END_QUERY,'')); + PRINT 'PARAMETER21 - @END_QUERY_VAR1: ' + CONVERT(NVARCHAR(50),ISNULL(@END_QUERY_VAR1,'')); + PRINT 'PARAMETER22 - @END_QUERY_VAR2: ' + CONVERT(NVARCHAR(50),ISNULL(@END_QUERY_VAR2,'')); + PRINT 'PARAMETER23 - @END_QUERY_VAR3: ' + CONVERT(NVARCHAR(50),ISNULL(@END_QUERY_VAR3,'')); + PRINT 'PARAMETER24 - @END_QUERY_VAR4: ' + CONVERT(NVARCHAR(50),ISNULL(@END_QUERY_VAR4,'')); + PRINT 'PARAMETER25 - @END_QUERY_VAR5: ' + CONVERT(NVARCHAR(50),ISNULL(@END_QUERY_VAR5,'')); + PRINT 'PARAMETER26 - @FORCE: ' + CONVERT(NVARCHAR(50),ISNULL(@FORCE,'')); + PRINT 'PARAMETER27 - @PROFILE_NAME: ' + CONVERT(NVARCHAR(50),ISNULL(@PROFILE_NAME,'')); + PRINT 'PARAMETER28 - @MANDANTOR: ' + CONVERT(NVARCHAR(50),ISNULL(@MANDANTOR,'')); + PRINT 'PARAMETER29 - @EXPORT_TYPE: ' + CONVERT(NVARCHAR(50),ISNULL(@EXPORT_TYPE,'')); + PRINT 'PARAMETER30 - @EXPORT_NUMBER_SCHEMA: ' + CONVERT(NVARCHAR(50),ISNULL(@EXPORT_NUMBER_SCHEMA,'')); + PRINT 'PARAMETER31 - @DEFAULT_DATA_SEPARATOR: ' + CONVERT(NVARCHAR(50),ISNULL(@DEFAULT_DATA_SEPARATOR,'')); + PRINT 'PARAMETER32 - @REFERENCE1: ' + CONVERT(NVARCHAR(50),ISNULL(@REFERENCE1,'')); + PRINT 'PARAMETER33 - @REFERENCE2: ' + CONVERT(NVARCHAR(50),ISNULL(@REFERENCE2,'')); + PRINT 'PARAMETER34 - @REFERENCE3: ' + CONVERT(NVARCHAR(50),ISNULL(@REFERENCE3,'')); + PRINT 'PARAMETER35 - @REFERENCE4: ' + CONVERT(NVARCHAR(50),ISNULL(@REFERENCE4,'')); + PRINT 'PARAMETER36 - @REFERENCE5: ' + CONVERT(NVARCHAR(50),ISNULL(@REFERENCE5,'')); + PRINT ''; + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + + --==================================================-- Count main sql querys --==================================================-- + SET @ROW_COUNT1 = ISNULL((SELECT COUNT(*) FROM [TBDEX_TMP_PROCESS_REFERENCES] WITH (SNAPSHOT) + WHERE [PROFILE_ID]=@PROFILE_ID AND [BATCH_ID]=@BATCH_ID AND [ADDED_WHO]=@BATCH_CREATOR),0); + SET @ROW_COUNT2 = ISNULL((SELECT COUNT(*) FROM [TBDEX_TMP_QUERY] WITH (SNAPSHOT) + WHERE [GUID] > 0 AND [PROFILE_ID]=@PROFILE_ID AND [BATCH_ID]=@BATCH_ID AND [QUERY] IS NOT NULL AND [ADDED_WHO]=@BATCH_CREATOR),0); + SET @ROW_COUNT_SUM1 = (@ROW_COUNT1 + @ROW_COUNT2); + + IF (@ROW_COUNT_SUM1 < 2) BEGIN + + --====================================================-- exception / error --====================================================-- + SET @RETURN_STATUS = 50007; + SET @RETURN_STATUS_TEXT = concat('',''); + SET @RETURN_ERROR_TEXT = concat('Insufficient rows in [TBDEX_TMP_PROCESS_REFERENCES] (COUNT: ',CONVERT(NVARCHAR(50),@ROW_COUNT1),') and/or [TBDEX_TMP_QUERY] (COUNT: ',CONVERT(NVARCHAR(50),@ROW_COUNT2),') found!'); + + THROW @RETURN_STATUS,@RETURN_ERROR_TEXT,1; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; ELSE BEGIN + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('Found the sum of: ',CONVERT(NVARCHAR(50),@ROW_COUNT_SUM1),' in the tables [TBDEX_TMP_PROCESS_REFERENCES] and [TBDEX_TMP_QUERY].'); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; + + --==================================================-- Handle placeholders --==================================================-- + DECLARE CURSOR_TBDEX_TMP_PROCESS_REFERENCES CURSOR + LOCAL FAST_FORWARD FOR + SELECT [GUID] as 'TBDEX_IN_GUID', [PROFILE_ID] as 'TBDEX_IN_PROFILE_ID', + [BATCH_ID] as 'TBDEX_IN_BATCH_ID', + [REFERENCE1] as 'TBDEX_IN_REFERENCE1', [REFERENCE2] as 'TBDEX_IN_REFERENCE2', + [REFERENCE3] as 'TBDEX_IN_REFERENCE3', [REFERENCE4] as 'TBDEX_IN_REFERENCE4', + [REFERENCE5] as 'TBDEX_IN_REFERENCE5', + [EXTERNAL_REFERENCE1] as 'TBDEX_IN_EXTERNAL_REFERENCE1', [EXTERNAL_REFERENCE2] as 'TBDEX_IN_EXTERNAL_REFERENCE2', + [EXTERNAL_REFERENCE3] as 'TBDEX_IN_EXTERNAL_REFERENCE3', [EXTERNAL_REFERENCE4] as 'TBDEX_IN_EXTERNAL_REFERENCE4', + [EXTERNAL_REFERENCE5] as 'TBDEX_IN_EXTERNAL_REFERENCE5', + --[TEST_MODE] as 'TBDEX_IN_TEST_MODE', [ASYNC_MODE] as 'TBDEX_IN_ASYNC_MODE', + [COMMENT] as 'TBDEX_IN_COMMENT', + [ADDED_WHO] as 'TBDEX_IN_ADDED_WHO', [ADDED_WHEN] as 'TBDEX_IN_ADDED_WHEN' + FROM [TBDEX_TMP_PROCESS_REFERENCES] WITH (SNAPSHOT) + WHERE [PROFILE_ID]=@PROFILE_ID AND [BATCH_ID]=@BATCH_ID AND [ADDED_WHO]=@BATCH_CREATOR + ORDER BY [GUID] ASC; + + OPEN CURSOR_TBDEX_TMP_PROCESS_REFERENCES + FETCH NEXT FROM CURSOR_TBDEX_TMP_PROCESS_REFERENCES INTO @TBDEX_IN_GUID,@TBDEX_IN_PROFILE_ID,@TBDEX_IN_BATCH_ID,@TBDEX_IN_REFERENCE1,@TBDEX_IN_REFERENCE2,@TBDEX_IN_REFERENCE3,@TBDEX_IN_REFERENCE4,@TBDEX_IN_REFERENCE5,@TBDEX_IN_EXTERNAL_REFERENCE1,@TBDEX_IN_EXTERNAL_REFERENCE2,@TBDEX_IN_EXTERNAL_REFERENCE3,@TBDEX_IN_EXTERNAL_REFERENCE4,@TBDEX_IN_EXTERNAL_REFERENCE5,@TBDEX_IN_COMMENT,@TBDEX_IN_ADDED_WHO,@TBDEX_IN_ADDED_WHEN; + WHILE @@FETCH_STATUS = 0 + BEGIN + + SET @ROW_COUNTER1 += 1; -- Increase loop counter + IF ((@ROW_COUNTER1 = 1) OR (@ROW_COUNTER1 = @ROW_COUNT1) OR (@ROW_COUNTER1 % 100 = 0)) BEGIN + PRINT concat('This is cursor (CURSOR_TBDEX_TMP_PROCESS_REFERENCES), loop nr: ',@ROW_COUNTER1); + END; + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('Proccessing table: [TBDEX_TMP_PROCESS_REFERENCES] - Row ',CONVERT(NVARCHAR(50),@ROW_COUNTER1),' of ',CONVERT(NVARCHAR(50),@ROW_COUNT1)); + SET @RETURN_ERROR_TEXT = concat('',''); + + IF ((@ROW_COUNTER1 = 1) OR (@ROW_COUNTER1 = @ROW_COUNT1) OR (@ROW_COUNTER1 % 100 = 0)) BEGIN + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- loop vars from row --====================================================-- + PRINT '[GUID]: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_IN_GUID,'')); + PRINT '[PROFILE_ID]: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_IN_PROFILE_ID,'')); + PRINT '[BATCH_ID]: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_IN_BATCH_ID,'')); + PRINT '[REFERENCE1]: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_IN_REFERENCE1,'')); + PRINT '[REFERENCE2]: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_IN_REFERENCE2,'')); + PRINT '[REFERENCE3]: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_IN_REFERENCE3,'')); + PRINT '[REFERENCE4]: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_IN_REFERENCE4,'')); + PRINT '[REFERENCE5]: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_IN_REFERENCE5,'')); + PRINT '[TEST_MODE]: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_IN_TEST_MODE,'')); + PRINT '[ASYNC_MODE]: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_IN_ASYNC_MODE,'')); + PRINT '[COMMENT]: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_IN_COMMENT,'')); + PRINT '[ADDED_WHO]: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_IN_ADDED_WHO,'')); + PRINT '[ADDED_WHEN]: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_IN_ADDED_WHEN,'')); + ----------------------------------------------------------------------------------------------------------------------------------- + + SET @ROW_COUNTER2 = 0; + + DECLARE CURSOR_TBDEX_TMP_QUERY CURSOR + LOCAL FAST_FORWARD FOR + SELECT [GUID] as 'TBDEX_TMP_QUERY_GUID', [PROFILE_ID] as 'TBDEX_TMP_QUERY_PROFILE_ID', [BATCH_ID] as 'TBDEX_TMP_QUERY_BATCH_ID', + [QUERY] as 'TBDEX_TMP_QUERY_QUERY', [COMMENT] as 'TBDEX_TMP_QUERY_COMMENT', [ADDED_WHO] as 'TBDEX_TMP_QUERY_ADDED_WHO', + [ADDED_WHEN] as 'TBDEX_TMP_QUERY_ADDED_WHEN' + FROM [TBDEX_TMP_QUERY] WITH (SNAPSHOT) + WHERE [PROFILE_ID]=@PROFILE_ID AND [BATCH_ID]=@BATCH_ID + ORDER BY [GUID] ASC; + + OPEN CURSOR_TBDEX_TMP_QUERY + FETCH NEXT FROM CURSOR_TBDEX_TMP_QUERY INTO @TBDEX_TMP_QUERY_GUID,@TBDEX_TMP_QUERY_PROFILE_ID,@TBDEX_TMP_QUERY_BATCH_ID,@TBDEX_TMP_QUERY_QUERY,@TBDEX_TMP_QUERY_COMMENT,@TBDEX_TMP_QUERY_ADDED_WHO,@TBDEX_TMP_QUERY_ADDED_WHEN; + WHILE @@FETCH_STATUS = 0 + BEGIN + + SET @ROW_COUNTER2 += 1; -- Increase loop counter + IF ((@ROW_COUNTER2 = 1) OR (@ROW_COUNTER2 = @ROW_COUNT2) OR (@ROW_COUNTER2 % 100 = 0)) BEGIN + PRINT concat('This is cursor (CURSOR_TBDEX_TMP_QUERY), loop nr: ',@ROW_COUNTER2); + END; + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('Proccessing table: [TBDEX_TMP_QUERY] - Row ',CONVERT(NVARCHAR(50),@ROW_COUNTER2),' of ',CONVERT(NVARCHAR(50),@ROW_COUNT2)); + SET @RETURN_ERROR_TEXT = concat('',''); + + IF ((@ROW_COUNTER2 = 1) OR (@ROW_COUNTER2 = @ROW_COUNT2) OR (@ROW_COUNTER2 % 100 = 0)) BEGIN + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- loop vars from row --====================================================-- + PRINT '[GUID]: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_TMP_QUERY_GUID,'')); + PRINT '[PROFILE_ID]: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_TMP_QUERY_PROFILE_ID,'')); + PRINT '[BATCH_ID]: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_TMP_QUERY_BATCH_ID,'')); + PRINT '[QUERY]: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_TMP_QUERY_QUERY,'')); + PRINT '[COMMENT]: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_TMP_QUERY_COMMENT,'')); + PRINT '[ADDED_WHO]: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_TMP_QUERY_ADDED_WHO,'')); + PRINT '[ADDED_WHEN]: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_TMP_QUERY_ADDED_WHEN,'')); + ----------------------------------------------------------------------------------------------------------------------------------- + + + --==================================================-- Handle placeholders --==================================================-- + PRINT ''; + PRINT 'Replacing placeholders in query...'; + + SET @TBDEX_TMP_QUERY_QUERY = REPLACE(@TBDEX_TMP_QUERY_QUERY,'%PROFILE_ID%',ISNULL(@PROFILE_ID,'')); + SET @TBDEX_TMP_QUERY_QUERY = REPLACE(@TBDEX_TMP_QUERY_QUERY,'%TEST_MODE%',ISNULL(@TEST_MODE,'')); + SET @TBDEX_TMP_QUERY_QUERY = REPLACE(@TBDEX_TMP_QUERY_QUERY,'%ASYNC_MODE%',ISNULL(@ASYNC_MODE,'')); + SET @TBDEX_TMP_QUERY_QUERY = REPLACE(@TBDEX_TMP_QUERY_QUERY,'%BATCH_ID%',ISNULL(@BATCH_ID,'')); + SET @TBDEX_TMP_QUERY_QUERY = REPLACE(@TBDEX_TMP_QUERY_QUERY,'%BATCH_CREATOR%',ISNULL(@BATCH_CREATOR,'')); + SET @TBDEX_TMP_QUERY_QUERY = REPLACE(@TBDEX_TMP_QUERY_QUERY,'%LANGUAGE%',ISNULL(@LANGUAGE,'')); + SET @TBDEX_TMP_QUERY_QUERY = REPLACE(@TBDEX_TMP_QUERY_QUERY,'%LOG_LEVEL%',ISNULL(@LOG_LEVEL,'')); + SET @TBDEX_TMP_QUERY_QUERY = REPLACE(@TBDEX_TMP_QUERY_QUERY,'%START_QUERY%',ISNULL(@START_QUERY,'')); + SET @TBDEX_TMP_QUERY_QUERY = REPLACE(@TBDEX_TMP_QUERY_QUERY,'%START_QUERY_VAR1%',ISNULL(@START_QUERY_VAR1,'')); + SET @TBDEX_TMP_QUERY_QUERY = REPLACE(@TBDEX_TMP_QUERY_QUERY,'%START_QUERY_VAR2%',ISNULL(@START_QUERY_VAR2,'')); + SET @TBDEX_TMP_QUERY_QUERY = REPLACE(@TBDEX_TMP_QUERY_QUERY,'%START_QUERY_VAR3%',ISNULL(@START_QUERY_VAR3,'')); + SET @TBDEX_TMP_QUERY_QUERY = REPLACE(@TBDEX_TMP_QUERY_QUERY,'%START_QUERY_VAR4%',ISNULL(@START_QUERY_VAR4,'')); + SET @TBDEX_TMP_QUERY_QUERY = REPLACE(@TBDEX_TMP_QUERY_QUERY,'%START_QUERY_VAR5%',ISNULL(@START_QUERY_VAR5,'')); + SET @TBDEX_TMP_QUERY_QUERY = REPLACE(@TBDEX_TMP_QUERY_QUERY,'%FORCE%',ISNULL(@FORCE,'')); + SET @TBDEX_TMP_QUERY_QUERY = REPLACE(@TBDEX_TMP_QUERY_QUERY,'%MY_PROCEDURE_NAME%',ISNULL(@MY_PROCEDURE_NAME,'')); + SET @TBDEX_TMP_QUERY_QUERY = REPLACE(@TBDEX_TMP_QUERY_QUERY,'%PROFILE_NAME%',ISNULL(@PROFILE_NAME,'')); + SET @TBDEX_TMP_QUERY_QUERY = REPLACE(@TBDEX_TMP_QUERY_QUERY,'%MANDANTOR%',ISNULL(@MANDANTOR,'')); + SET @TBDEX_TMP_QUERY_QUERY = REPLACE(@TBDEX_TMP_QUERY_QUERY,'%EXPORT_TYPE%',ISNULL(@EXPORT_TYPE,'')); + SET @TBDEX_TMP_QUERY_QUERY = REPLACE(@TBDEX_TMP_QUERY_QUERY,'%REFERENCE1%',ISNULL(@TBDEX_IN_REFERENCE1,'')); + SET @TBDEX_TMP_QUERY_QUERY = REPLACE(@TBDEX_TMP_QUERY_QUERY,'%REFERENCE2%',ISNULL(@TBDEX_IN_REFERENCE2,'')); + SET @TBDEX_TMP_QUERY_QUERY = REPLACE(@TBDEX_TMP_QUERY_QUERY,'%REFERENCE3%',ISNULL(@TBDEX_IN_REFERENCE3,'')); + SET @TBDEX_TMP_QUERY_QUERY = REPLACE(@TBDEX_TMP_QUERY_QUERY,'%REFERENCE4%',ISNULL(@TBDEX_IN_REFERENCE4,'')); + SET @TBDEX_TMP_QUERY_QUERY = REPLACE(@TBDEX_TMP_QUERY_QUERY,'%REFERENCE5%',ISNULL(@TBDEX_IN_REFERENCE5,'')); + + DECLARE CURSOR_PLACEHOLDER CURSOR + LOCAL FAST_FORWARD FOR + SELECT [PLACEHOLDER_NAME] as 'Placeholder_Name', [PLACEHOLDER] as 'Placeholder' + FROM [TBDEX_CFG_RESOURCES] (NOLOCK) + WHERE [PROFILE_ID] IN (0,@PROFILE_ID) AND [ACTIVE] = @ACTIVE_FLAG AND LTRIM(RTRIM([PLACEHOLDER_TYPE])) = @PLACEHOLDER_TYPE + ORDER BY [SEQUENCE] ASC; + + OPEN CURSOR_PLACEHOLDER + FETCH NEXT FROM CURSOR_PLACEHOLDER INTO @PLACEHOLDER_NAME,@PLACEHOLDER; + WHILE @@FETCH_STATUS = 0 + BEGIN + + SET @TBDEX_TMP_QUERY_QUERY = REPLACE(@TBDEX_TMP_QUERY_QUERY,concat('%',@PLACEHOLDER_NAME,'%'),ISNULL(@PLACEHOLDER,'')); + + FETCH NEXT FROM CURSOR_PLACEHOLDER INTO @PLACEHOLDER_NAME,@PLACEHOLDER; + END + CLOSE CURSOR_PLACEHOLDER; + DEALLOCATE CURSOR_PLACEHOLDER; + ----------------------------------------------------------------------------------------------------------------------------------- + + --=================================================-- Check first sql query --===================================================-- + IF (LEN(@TBDEX_TMP_QUERY_QUERY) < 15) BEGIN + + --====================================================-- exception / error --====================================================-- + SET @RETURN_STATUS = 50001; + SET @RETURN_STATUS_TEXT = concat('Wrong call or configuraton!',''); + SET @RETURN_ERROR_TEXT = concat('Found no valid querys (query needs to be 15 chars or more)!',''); + + THROW @RETURN_STATUS,@RETURN_ERROR_TEXT,1; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; ELSE BEGIN + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('Found valid "@TBDEX_TMP_QUERY_QUERY" query: ',char(13),@TBDEX_TMP_QUERY_QUERY); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + --=================================================-- build insert statement --==================================================-- + SET @TBDEX_TMP_QUERY_QUERY = CONCAT(char(13),'INSERT INTO ',@TBDEX_TMP_TABLE_SCHEMA_AND_NAME, + '(',@pTBDEX_TMP_TABLE_COLUMNS,')',char(13), + @TBDEX_TMP_QUERY_QUERY); + ----------------------------------------------------------------------------------------------------------------------------------- + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('The complete "@TBDEX_TMP_QUERY_QUERY" query: ',char(13),@TBDEX_TMP_QUERY_QUERY); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + --======================================================-- Safety checks --======================================================-- + EXEC [PRDEX_TEST_DYNAMIC_SQL] @pQUERY = @TBDEX_TMP_QUERY_QUERY, + @pRETURN_STATUS = 50052, + @pQUERY_NAME = N'@TBDEX_TMP_QUERY_QUERY'; + ----------------------------------------------------------------------------------------------------------------------------------- + + --==================================================-- run insert statement --===================================================-- + EXEC @RETURN_STATUS = sp_executesql @TBDEX_TMP_QUERY_QUERY; + + IF (@RETURN_STATUS <> 0) BEGIN + + --====================================================-- exception / error --====================================================-- + SET @RETURN_STATUS = @RETURN_STATUS; + SET @RETURN_STATUS_TEXT = concat('Check previous error text!',''); + SET @RETURN_ERROR_TEXT = concat('Error occurred in [PRDEX_GET_INPUT_CONTENT] / @TBDEX_TMP_QUERY_QUERY!',''); + + THROW @RETURN_STATUS,@RETURN_ERROR_TEXT,1; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; ELSE BEGIN + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('Procedure [PRDEX_GET_INPUT_CONTENT] / @TBDEX_TMP_QUERY_QUERY worked just fine!',''); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + FETCH NEXT FROM CURSOR_TBDEX_TMP_QUERY INTO @TBDEX_TMP_QUERY_GUID,@TBDEX_TMP_QUERY_PROFILE_ID,@TBDEX_TMP_QUERY_BATCH_ID,@TBDEX_TMP_QUERY_QUERY,@TBDEX_TMP_QUERY_COMMENT,@TBDEX_TMP_QUERY_ADDED_WHO,@TBDEX_TMP_QUERY_ADDED_WHEN; + END + CLOSE CURSOR_TBDEX_TMP_QUERY; + DEALLOCATE CURSOR_TBDEX_TMP_QUERY; + ----------------------------------------------------------------------------------------------------------------------------------- + + FETCH NEXT FROM CURSOR_TBDEX_TMP_PROCESS_REFERENCES INTO @TBDEX_IN_GUID,@TBDEX_IN_PROFILE_ID,@TBDEX_IN_BATCH_ID,@TBDEX_IN_REFERENCE1,@TBDEX_IN_REFERENCE2,@TBDEX_IN_REFERENCE3,@TBDEX_IN_REFERENCE4,@TBDEX_IN_REFERENCE5,@TBDEX_IN_EXTERNAL_REFERENCE1,@TBDEX_IN_EXTERNAL_REFERENCE2,@TBDEX_IN_EXTERNAL_REFERENCE3,@TBDEX_IN_EXTERNAL_REFERENCE4,@TBDEX_IN_EXTERNAL_REFERENCE5,@TBDEX_IN_COMMENT,@TBDEX_IN_ADDED_WHO,@TBDEX_IN_ADDED_WHEN; + END + CLOSE CURSOR_TBDEX_TMP_PROCESS_REFERENCES; + DEALLOCATE CURSOR_TBDEX_TMP_PROCESS_REFERENCES; + ----------------------------------------------------------------------------------------------------------------------------------- + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('END PROCEDURE [',@MY_PROCEDURE_NAME,'] @ ',CONVERT(NVARCHAR(50),GETDATE(),120)); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT ''; + PRINT @RETURN_STATUS_TEXT; + PRINT '===================================================================================================='; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + RETURN @RETURN_STATUS; + +END TRY BEGIN CATCH + + --====================================================-- exception / error --====================================================-- + IF (@@TRANCOUNT > 0) BEGIN + ROLLBACK TRANSACTION; + END; + + PRINT 'ERROR: ' + @RETURN_ERROR_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO','WARN','ERROR')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'ERROR', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = CASE WHEN @RETURN_STATUS > 50000 THEN @RETURN_STATUS ELSE 50000 END; + SET @RETURN_STATUS_TEXT = concat('END PROCEDURE [',@MY_PROCEDURE_NAME,'] @ ',CONVERT(NVARCHAR(50),GETDATE(),120)); + SET @RETURN_ERROR_TEXT = concat('ERROR MESSAGE: ',CONVERT(NVARCHAR(500),ERROR_MESSAGE())); + + PRINT 'ERROR IN PROCEDURE: [' + @MY_PROCEDURE_NAME + ']' + char(13) + @RETURN_ERROR_TEXT; + PRINT @RETURN_STATUS_TEXT; + PRINT '===================================================================================================='; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO','WARN','ERROR')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'ERROR', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + RETURN @RETURN_STATUS; + +END CATCH; +GO \ No newline at end of file diff --git a/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_REGISTER_PROCESS].sql b/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_REGISTER_PROCESS].sql new file mode 100644 index 0000000000000000000000000000000000000000..a984a30f3dced99d9766bbc3c3908aa7b2d214a2 GIT binary patch literal 33728 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 literal 0 HcmV?d00001 diff --git a/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_RUN_MAINPROCESSING].sql b/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_RUN_MAINPROCESSING].sql new file mode 100644 index 0000000..a67c220 --- /dev/null +++ b/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_RUN_MAINPROCESSING].sql @@ -0,0 +1,601 @@ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +-- [PRDEX_RUN_MAINPROCESSING] +-- ================================================================= +-- Sub procedure to run MAINPROCESSING steps +-- +-- Returns: INTEGER; 0 = ok; 0 <> not ok +-- ================================================================= +-- Copyright (c) 2025 by Digital Data GmbH +-- +-- Digital Data GmbH • Ludwig-Rinn-Strasse 16 • D-35452 Heuchelheim +-- Tel.: 0641/202360 • E-Mail: info-flow@digitaldata.works +-- ================================================================= +-- Creation Date / Author: 01.08.2025 / MK +-- Version Date / Editor: 01.08.2025 / MK +-- Version Number: 1.0.0.0 +-- ================================================================= +-- History: +-- 01.08.2025 / MK - First Version + +CREATE OR ALTER PROCEDURE [dbo].[PRDEX_RUN_MAINPROCESSING]( + @pPROFILE_ID BIGINT, + @pTEST_MODE BIT, + @pASYNC_MODE BIT, + @pBATCH_ID NVARCHAR(25), + @pBATCH_CREATOR NVARCHAR(50), + @pLANGUAGE NVARCHAR(10), + @pLOG_LEVEL NVARCHAR(25), + @pSTART_QUERY NVARCHAR(MAX), + @pSTART_QUERY_VAR1 NVARCHAR(50), + @pSTART_QUERY_VAR2 NVARCHAR(50), + @pSTART_QUERY_VAR3 NVARCHAR(50), + @pSTART_QUERY_VAR4 NVARCHAR(50), + @pSTART_QUERY_VAR5 NVARCHAR(50), + @pMAIN_QUERY NVARCHAR(MAX), + @pMAIN_QUERY_VAR1 NVARCHAR(50), + @pMAIN_QUERY_VAR2 NVARCHAR(50), + @pMAIN_QUERY_VAR3 NVARCHAR(50), + @pMAIN_QUERY_VAR4 NVARCHAR(50), + @pMAIN_QUERY_VAR5 NVARCHAR(50), + @pEND_QUERY NVARCHAR(MAX), + @pEND_QUERY_VAR1 NVARCHAR(50), + @pEND_QUERY_VAR2 NVARCHAR(50), + @pEND_QUERY_VAR3 NVARCHAR(50), + @pEND_QUERY_VAR4 NVARCHAR(50), + @pEND_QUERY_VAR5 NVARCHAR(50), + @pFORCE BIT, + @pPROFILE_NAME NVARCHAR(50), + @pMANDANTOR NVARCHAR(50), + @pEXPORT_TYPE NVARCHAR(50), + @pDEFAULT_DATA_SEPARATOR NVARCHAR(10), + @pTBDEX_TMP_TABLE_SCHEMA SYSNAME, + @pTBDEX_TMP_TABLE_NAME SYSNAME, + @pTBDEX_TMP_TABLE_SCHEMA_AND_NAME NVARCHAR(150), + @pTBDEX_TMP_TABLE_COLUMNS NVARCHAR(MAX), + @pTBDEX_TMP_TABLE_DROP_QUERY NVARCHAR(MAX), + @pTBDEX_TMP_TABLE_CREATE_QUERY NVARCHAR(MAX), + @pTBDEX_TMP_TABLE_INSERT_QUERY NVARCHAR(MAX) +) +AS +BEGIN TRY + + SET NOCOUNT ON; + SET XACT_ABORT ON; + + -- declare new vars because of parameter sniffing + DECLARE @PROFILE_ID BIGINT = @pPROFILE_ID, + @TEST_MODE BIT = @pTEST_MODE, + @ASYNC_MODE BIT = @pASYNC_MODE, + @BATCH_ID NVARCHAR(25) = @pBATCH_ID, + @BATCH_CREATOR NVARCHAR(128) = ISNULL(@pBATCH_CREATOR,OBJECT_NAME(@@PROCID)), + @LANGUAGE NVARCHAR(10) = @pLANGUAGE, + @LOG_LEVEL NVARCHAR(25) = UPPER(ISNULL(@pLOG_LEVEL,'INFO')), + @START_QUERY NVARCHAR(MAX) = @pSTART_QUERY, + @START_QUERY_VAR1 NVARCHAR(50) = @pSTART_QUERY_VAR1, + @START_QUERY_VAR2 NVARCHAR(50) = @pSTART_QUERY_VAR2, + @START_QUERY_VAR3 NVARCHAR(50) = @pSTART_QUERY_VAR3, + @START_QUERY_VAR4 NVARCHAR(50) = @pSTART_QUERY_VAR4, + @START_QUERY_VAR5 NVARCHAR(50) = @pSTART_QUERY_VAR5, + @MAIN_QUERY NVARCHAR(MAX) = @pMAIN_QUERY, + @MAIN_QUERY_VAR1 NVARCHAR(50) = @pMAIN_QUERY_VAR1, + @MAIN_QUERY_VAR2 NVARCHAR(50) = @pMAIN_QUERY_VAR2, + @MAIN_QUERY_VAR3 NVARCHAR(50) = @pMAIN_QUERY_VAR3, + @MAIN_QUERY_VAR4 NVARCHAR(50) = @pMAIN_QUERY_VAR4, + @MAIN_QUERY_VAR5 NVARCHAR(50) = @pMAIN_QUERY_VAR5, + @END_QUERY NVARCHAR(MAX) = @pEND_QUERY, + @END_QUERY_VAR1 NVARCHAR(50) = @pEND_QUERY_VAR1, + @END_QUERY_VAR2 NVARCHAR(50) = @pEND_QUERY_VAR2, + @END_QUERY_VAR3 NVARCHAR(50) = @pEND_QUERY_VAR3, + @END_QUERY_VAR4 NVARCHAR(50) = @pEND_QUERY_VAR4, + @END_QUERY_VAR5 NVARCHAR(50) = @pEND_QUERY_VAR5, + @FORCE BIT = @pFORCE, + @PROFILE_NAME NVARCHAR(50) = @pPROFILE_NAME, + @MANDANTOR NVARCHAR(50) = @pMANDANTOR, + @EXPORT_TYPE NVARCHAR(10) = @pEXPORT_TYPE, + @DEFAULT_DATA_SEPARATOR NVARCHAR(50) = @pDEFAULT_DATA_SEPARATOR, + @TBDEX_TMP_TABLE_SCHEMA SYSNAME = @pTBDEX_TMP_TABLE_SCHEMA, + @TBDEX_TMP_TABLE_NAME SYSNAME = @pTBDEX_TMP_TABLE_NAME, + @TBDEX_TMP_TABLE_SCHEMA_AND_NAME NVARCHAR(150) = @pTBDEX_TMP_TABLE_SCHEMA_AND_NAME, + @TBDEX_TMP_TABLE_COLUMNS NVARCHAR(MAX) = @pTBDEX_TMP_TABLE_COLUMNS, + @TBDEX_TMP_TABLE_DROP_QUERY NVARCHAR(MAX) = @pTBDEX_TMP_TABLE_DROP_QUERY, + @TBDEX_TMP_TABLE_CREATE_QUERY NVARCHAR(MAX) = @pTBDEX_TMP_TABLE_CREATE_QUERY, + @TBDEX_TMP_TABLE_INSERT_QUERY NVARCHAR(MAX) = @pTBDEX_TMP_TABLE_INSERT_QUERY; + + + -- declare runtime vars + DECLARE @MY_PROCEDURE_NAME NVARCHAR(128) = OBJECT_NAME(@@PROCID); + DECLARE @ACTIVE_FLAG BIT = 1, + @INACTIVE_FLAG BIT = 0, + @ROW_COUNT1 SMALLINT = 0, + @ROW_COUNT2 SMALLINT = 0, + @GUID BIGINT = 0, + @SEQUENCE TINYINT = 0, + @MAINPROCESSING_NAME NVARCHAR(50) = NULL, + @MAINPROCESSING_TYPE NVARCHAR(10) = NULL, + @MAINPROCESSING_QUERY NVARCHAR(MAX) = NULL, + @ERROR_ACTION NVARCHAR(25) = NULL, + @REFERENCE1 NVARCHAR(150) = NULL, + @REFERENCE2 NVARCHAR(150) = NULL, + @REFERENCE3 NVARCHAR(150) = NULL, + @REFERENCE4 NVARCHAR(150) = NULL, + @REFERENCE5 NVARCHAR(150) = NULL, + @EXTERNAL_REFERENCE1 NVARCHAR(250) = NULL, + @EXTERNAL_REFERENCE2 NVARCHAR(250) = NULL, + @EXTERNAL_REFERENCE3 NVARCHAR(250) = NULL, + @EXTERNAL_REFERENCE4 NVARCHAR(250) = NULL, + @EXTERNAL_REFERENCE5 NVARCHAR(250) = NULL, + @TBDEX_TMP_TABLE_CONTENT NVARCHAR(MAX) = NULL, + @EXPORT_NUMBER_SCHEMA NVARCHAR(25) = NULL, + @EXPORT_NUMBER_COUNTER BIGINT = NULL, + @EXPORT_NUMBER NVARCHAR(25) = NULL, + @PLACEHOLDER_NAME NVARCHAR(50) = NULL, + @PLACEHOLDER NVARCHAR(MAX) = NULL, + @PLACEHOLDER_TYPE NVARCHAR(10) = 'CONST', + @HAS_UNRESOLVED_PLACEHOLDER BIT = 0, + @HAS_RESTRICTED_SQL BIT = 0, + @HAS_UNSAFE_TEMP_TARGET BIT = 0, + @RETURN_STATUS INT = 0, + @RETURN_STATUS_TEXT NVARCHAR(MAX) = concat('START PROCEDURE [',@MY_PROCEDURE_NAME,'] @ ',CONVERT(varchar(50),GETDATE(),120)), + @RETURN_ERROR_TEXT NVARCHAR(MAX) = ''; + + PRINT '===================================================================================================='; + PRINT @RETURN_STATUS_TEXT; + PRINT ''; + PRINT 'PARAMETER01 - @PROFILE_ID: ' + CONVERT(NVARCHAR(50),ISNULL(@PROFILE_ID,'')); + PRINT 'PARAMETER02 - @TEST_MODE: ' + CONVERT(NVARCHAR(50),ISNULL(@TEST_MODE,'')); + PRINT 'PARAMETER03 - @ASYNC_MODE: ' + CONVERT(NVARCHAR(50),ISNULL(@ASYNC_MODE,'')); + PRINT 'PARAMETER04 - @BATCH_ID: ' + CONVERT(NVARCHAR(50),ISNULL(@BATCH_ID,'')); + PRINT 'PARAMETER05 - @BATCH_CREATOR: ' + CONVERT(NVARCHAR(50),ISNULL(@BATCH_CREATOR,'')); + PRINT 'PARAMETER06 - @LANGUAGE: ' + CONVERT(NVARCHAR(50),ISNULL(@LANGUAGE,'')); + PRINT 'PARAMETER07 - @LOG_LEVEL: ' + CONVERT(NVARCHAR(50),ISNULL(@LOG_LEVEL,'')); + PRINT 'PARAMETER08 - @START_QUERY: ' + CONVERT(NVARCHAR(50),ISNULL(@START_QUERY,'')); + PRINT 'PARAMETER09 - @START_QUERY_VAR1: ' + CONVERT(NVARCHAR(50),ISNULL(@START_QUERY_VAR1,'')); + PRINT 'PARAMETER10 - @START_QUERY_VAR2: ' + CONVERT(NVARCHAR(50),ISNULL(@START_QUERY_VAR2,'')); + PRINT 'PARAMETER11 - @START_QUERY_VAR3: ' + CONVERT(NVARCHAR(50),ISNULL(@START_QUERY_VAR3,'')); + PRINT 'PARAMETER12 - @START_QUERY_VAR4: ' + CONVERT(NVARCHAR(50),ISNULL(@START_QUERY_VAR4,'')); + PRINT 'PARAMETER13 - @START_QUERY_VAR5: ' + CONVERT(NVARCHAR(50),ISNULL(@START_QUERY_VAR5,'')); + PRINT 'PARAMETER14 - @MAIN_QUERY: ' + CONVERT(NVARCHAR(50),ISNULL(@MAIN_QUERY,'')); + PRINT 'PARAMETER15 - @MAIN_QUERY_VAR1: ' + CONVERT(NVARCHAR(50),ISNULL(@MAIN_QUERY_VAR1,'')); + PRINT 'PARAMETER16 - @MAIN_QUERY_VAR2: ' + CONVERT(NVARCHAR(50),ISNULL(@MAIN_QUERY_VAR2,'')); + PRINT 'PARAMETER17 - @MAIN_QUERY_VAR3: ' + CONVERT(NVARCHAR(50),ISNULL(@MAIN_QUERY_VAR3,'')); + PRINT 'PARAMETER18 - @MAIN_QUERY_VAR4: ' + CONVERT(NVARCHAR(50),ISNULL(@MAIN_QUERY_VAR4,'')); + PRINT 'PARAMETER19 - @MAIN_QUERY_VAR5: ' + CONVERT(NVARCHAR(50),ISNULL(@MAIN_QUERY_VAR5,'')); + PRINT 'PARAMETER20 - @END_QUERY: ' + CONVERT(NVARCHAR(50),ISNULL(@END_QUERY,'')); + PRINT 'PARAMETER21 - @END_QUERY_VAR1: ' + CONVERT(NVARCHAR(50),ISNULL(@END_QUERY_VAR1,'')); + PRINT 'PARAMETER22 - @END_QUERY_VAR2: ' + CONVERT(NVARCHAR(50),ISNULL(@END_QUERY_VAR2,'')); + PRINT 'PARAMETER23 - @END_QUERY_VAR3: ' + CONVERT(NVARCHAR(50),ISNULL(@END_QUERY_VAR3,'')); + PRINT 'PARAMETER24 - @END_QUERY_VAR4: ' + CONVERT(NVARCHAR(50),ISNULL(@END_QUERY_VAR4,'')); + PRINT 'PARAMETER25 - @END_QUERY_VAR5: ' + CONVERT(NVARCHAR(50),ISNULL(@END_QUERY_VAR5,'')); + PRINT 'PARAMETER26 - @FORCE: ' + CONVERT(NVARCHAR(50),ISNULL(@FORCE,'')); + PRINT 'PARAMETER27 - @PROFILE_NAME: ' + CONVERT(NVARCHAR(50),ISNULL(@PROFILE_NAME,'')); + PRINT 'PARAMETER28 - @MANDANTOR: ' + CONVERT(NVARCHAR(50),ISNULL(@MANDANTOR,'')); + PRINT 'PARAMETER29 - @EXPORT_TYPE: ' + CONVERT(NVARCHAR(50),ISNULL(@EXPORT_TYPE,'')); + PRINT 'PARAMETER30 - @DEFAULT_DATA_SEPARATOR: ' + CONVERT(NVARCHAR(50),ISNULL(@DEFAULT_DATA_SEPARATOR,'')); + PRINT 'PARAMETER31 - @TBDEX_TMP_TABLE_SCHEMA: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_TMP_TABLE_SCHEMA,'')); + PRINT 'PARAMETER32 - @TBDEX_TMP_TABLE_NAME: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_TMP_TABLE_NAME,'')); + PRINT 'PARAMETER33 - @TBDEX_TMP_TABLE_SCHEMA_AND_NAME: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_TMP_TABLE_SCHEMA_AND_NAME,'')); + PRINT 'PARAMETER34 - @TBDEX_TMP_TABLE_COLUMNS: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_TMP_TABLE_COLUMNS,'')); + PRINT 'PARAMETER35 - @TBDEX_TMP_TABLE_DROP_QUERY: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_TMP_TABLE_DROP_QUERY,'')); + PRINT 'PARAMETER36 - @TBDEX_TMP_TABLE_CREATE_QUERY: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_TMP_TABLE_CREATE_QUERY,'')); + PRINT 'PARAMETER37 - @TBDEX_TMP_TABLE_INSERT_QUERY: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_TMP_TABLE_INSERT_QUERY,'')); + PRINT ''; + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + + --================================================-- Check for export columns --=================================================-- + SET @ROW_COUNT1 = (SELECT count(*) FROM [TBDEX_CFG_OUT_STRUCTURE] AS [COS] + WHERE [COS].[ACTIVE] = @ACTIVE_FLAG AND [COS].[EXPORT_TYPE] = @EXPORT_TYPE AND [COS].[PROFILE_ID] = @PROFILE_ID + AND [COS].[LANGUAGE] in (REPLACE(@LANGUAGE,'-','_'),REPLACE(@LANGUAGE,'_','-'))); + IF (@ROW_COUNT1 = 0) BEGIN + + --====================================================-- exception / error --====================================================-- + SET @RETURN_STATUS = 50022; + SET @RETURN_STATUS_TEXT = concat('',''); + SET @RETURN_ERROR_TEXT = concat('Found no valid column configuration in [TBDEX_CFG_OUT_STRUCTURE]!',''); + + THROW @RETURN_STATUS,@RETURN_ERROR_TEXT,1; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; ELSE BEGIN + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('Found a valid column configuration in [TBDEX_CFG_OUT_STRUCTURE]!',''); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + + --======================================================-- Safety checks --======================================================-- + EXEC [PRDEX_TEST_DYNAMIC_SQL] @pQUERY = @TBDEX_TMP_TABLE_DROP_QUERY, + @pRETURN_STATUS = 50057, + @pQUERY_NAME = N'@TBDEX_TMP_TABLE_DROP_QUERY'; + + EXEC [PRDEX_TEST_DYNAMIC_SQL] @pQUERY = @TBDEX_TMP_TABLE_CREATE_QUERY, + @pRETURN_STATUS = 50057, + @pQUERY_NAME = N'@TBDEX_TMP_TABLE_CREATE_QUERY'; + + SET @HAS_UNSAFE_TEMP_TARGET = CASE WHEN + (PATINDEX('%DROP TABLE%',UPPER(@TBDEX_TMP_TABLE_DROP_QUERY)) = 0) OR + (PATINDEX('%CREATE TABLE%',UPPER(@TBDEX_TMP_TABLE_CREATE_QUERY)) = 0) OR + ( + (PATINDEX('%TEMPDB..%',UPPER(@TBDEX_TMP_TABLE_DROP_QUERY)) = 0) + AND (PATINDEX('%#%',@TBDEX_TMP_TABLE_DROP_QUERY) = 0) + ) OR + ( + (PATINDEX('%TEMPDB..%',UPPER(@TBDEX_TMP_TABLE_CREATE_QUERY)) = 0) + AND (PATINDEX('%#%',@TBDEX_TMP_TABLE_CREATE_QUERY) = 0) + ) + THEN 1 ELSE 0 END; + + IF (@HAS_UNSAFE_TEMP_TARGET = 1) BEGIN + + SET @RETURN_STATUS = 50057; + SET @RETURN_STATUS_TEXT = concat('Blocked unsafe temp table query content in [PRDEX_RUN_MAINPROCESSING]!',''); + SET @RETURN_ERROR_TEXT = concat('Detected unresolved placeholders, restricted statements, or non-tempdb/non-# table target in drop/create query.',''); + + THROW @RETURN_STATUS,@RETURN_ERROR_TEXT,1; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + --============================================-- Drop dynamic temp table, if exists --===========================================-- + PRINT concat('INFO: ','Executing drop cmd:',char(13),@TBDEX_TMP_TABLE_DROP_QUERY); + EXEC sp_executesql @TBDEX_TMP_TABLE_DROP_QUERY; + ----------------------------------------------------------------------------------------------------------------------------------- + + --================================================-- create dynamic temp table --================================================-- + PRINT concat('INFO: ','Executing create cmd:',char(13),@TBDEX_TMP_TABLE_CREATE_QUERY); + EXEC sp_executesql @TBDEX_TMP_TABLE_CREATE_QUERY; -- The structure is based on the config of the table "[TBDEX_CFG_OUT_STRUCTURE]" + ----------------------------------------------------------------------------------------------------------------------------------- + + --===============================================-- Check if table was created --================================================-- + IF (OBJECT_ID(concat('tempdb..',@TBDEX_TMP_TABLE_SCHEMA_AND_NAME), 'U') IS NULL) BEGIN + + --====================================================-- exception / error --====================================================-- + SET @RETURN_STATUS = 50006; + SET @RETURN_STATUS_TEXT = concat('','') + SET @RETURN_ERROR_TEXT = concat('Cannot create the temp table: ',@TBDEX_TMP_TABLE_SCHEMA_AND_NAME,'!'); + + THROW @RETURN_STATUS,@RETURN_ERROR_TEXT,1; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; ELSE BEGIN + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('The temp table: ',@TBDEX_TMP_TABLE_SCHEMA_AND_NAME,' has been created!'); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + + --=============================================-- Check if ref table has content --==============================================-- + SET @ROW_COUNT2 = (SELECT COUNT(*) FROM [TBDEX_TMP_PROCESS_REFERENCES] WITH (SNAPSHOT) + WHERE [PROFILE_ID] = @PROFILE_ID + AND [BATCH_ID] = @BATCH_ID + AND [ADDED_WHO] IN (@BATCH_CREATOR,@MY_PROCEDURE_NAME)); + + IF (@ROW_COUNT2 = 0) BEGIN + + --====================================================-- exception / error --====================================================-- + SET @RETURN_STATUS = 50010; + SET @RETURN_STATUS_TEXT = concat('',''); + SET @RETURN_ERROR_TEXT = concat('Found no fitting lines [TBDEX_TMP_PROCESS_REFERENCES]!',''); + + THROW @RETURN_STATUS,@RETURN_ERROR_TEXT,1; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; ELSE BEGIN + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('Found ',@ROW_COUNT2,' fitting lines in [TBDEX_TMP_PROCESS_REFERENCES]!',''); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + + --===========================================-- Get referencies from input table --==============================================-- + DECLARE CURSOR_MAINPROCESSING CURSOR + LOCAL FAST_FORWARD FOR + SELECT [REFERENCE1] as 'REFERENCE1', + [REFERENCE2] as 'REFERENCE2', + [REFERENCE3] as 'REFERENCE3', + [REFERENCE4] as 'REFERENCE4', + [REFERENCE5] as 'REFERENCE5', + [EXTERNAL_REFERENCE1] as 'EXTERNAL_REFERENCE1', + [EXTERNAL_REFERENCE2] as 'EXTERNAL_REFERENCE2', + [EXTERNAL_REFERENCE3] as 'EXTERNAL_REFERENCE3', + [EXTERNAL_REFERENCE4] as 'EXTERNAL_REFERENCE4', + [EXTERNAL_REFERENCE5] as 'EXTERNAL_REFERENCE5', + [EXPORT_NUMBER_COUNTER] as 'EXPORT_NUMBER_COUNTER', + [EXPORT_NUMBER] as 'EXPORT_NUMBER' + FROM [TBDEX_TMP_PROCESS_REFERENCES] WITH (SNAPSHOT) + WHERE [PROFILE_ID] = @PROFILE_ID + AND [BATCH_ID] = @BATCH_ID + AND [ADDED_WHO] IN (@BATCH_CREATOR,@MY_PROCEDURE_NAME); + + OPEN CURSOR_MAINPROCESSING + FETCH NEXT FROM CURSOR_MAINPROCESSING INTO @REFERENCE1,@REFERENCE2,@REFERENCE3,@REFERENCE4,@REFERENCE5,@EXTERNAL_REFERENCE1,@EXTERNAL_REFERENCE2,@EXTERNAL_REFERENCE3,@EXTERNAL_REFERENCE4,@EXTERNAL_REFERENCE5,@EXPORT_NUMBER_COUNTER,@EXPORT_NUMBER; + WHILE @@FETCH_STATUS = 0 + BEGIN + + --=================================================-- Call input procedure --==================================================-- + EXEC @RETURN_STATUS = [PRDEX_SET_QUERY] @pPROFILE_ID = @PROFILE_ID, + @pTEST_MODE = @TEST_MODE, + @pASYNC_MODE = @ASYNC_MODE, + @pBATCH_ID = @BATCH_ID, + @pBATCH_CREATOR = @BATCH_CREATOR, + @pLANGUAGE = @LANGUAGE, + @pLOG_LEVEL = @LOG_LEVEL, + @pSTART_QUERY = @START_QUERY, + @pSTART_QUERY_VAR1 = @START_QUERY_VAR1, + @pSTART_QUERY_VAR2 = @START_QUERY_VAR2, + @pSTART_QUERY_VAR3 = @START_QUERY_VAR3, + @pSTART_QUERY_VAR4 = @START_QUERY_VAR4, + @pSTART_QUERY_VAR5 = @START_QUERY_VAR5, + @pMAIN_QUERY = @MAIN_QUERY, + @pMAIN_QUERY_VAR1 = @MAIN_QUERY_VAR1, + @pMAIN_QUERY_VAR2 = @MAIN_QUERY_VAR2, + @pMAIN_QUERY_VAR3 = @MAIN_QUERY_VAR3, + @pMAIN_QUERY_VAR4 = @MAIN_QUERY_VAR4, + @pMAIN_QUERY_VAR5 = @MAIN_QUERY_VAR5, + @pEND_QUERY = @END_QUERY, + @pEND_QUERY_VAR1 = @END_QUERY_VAR1, + @pEND_QUERY_VAR2 = @END_QUERY_VAR2, + @pEND_QUERY_VAR3 = @END_QUERY_VAR3, + @pEND_QUERY_VAR4 = @END_QUERY_VAR4, + @pEND_QUERY_VAR5 = @END_QUERY_VAR5, + @pFORCE = @FORCE, + @pPROFILE_NAME = @PROFILE_NAME, + @pMANDANTOR = @MANDANTOR, + @pEXPORT_TYPE = @EXPORT_TYPE, + @pEXPORT_NUMBER_SCHEMA = @EXPORT_NUMBER_SCHEMA, + @pDEFAULT_DATA_SEPARATOR = @DEFAULT_DATA_SEPARATOR, + @pREFERENCE1 = @REFERENCE1, + @pREFERENCE2 = @REFERENCE2, + @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, + @pREFERENCE5 = @REFERENCE5, + @pEXTERNAL_REFERENCE1 = @EXTERNAL_REFERENCE1, + @pEXTERNAL_REFERENCE2 = @EXTERNAL_REFERENCE2, + @pEXTERNAL_REFERENCE3 = @EXTERNAL_REFERENCE3, + @pEXTERNAL_REFERENCE4 = @EXTERNAL_REFERENCE4, + @pEXTERNAL_REFERENCE5 = @EXTERNAL_REFERENCE5; + + IF (@RETURN_STATUS <> 0) BEGIN + + --====================================================-- exception / error --====================================================-- + SET @RETURN_STATUS = @RETURN_STATUS; + SET @RETURN_STATUS_TEXT = concat('Error occurred in [PRDEX_SET_QUERY]!',''); + SET @RETURN_ERROR_TEXT = concat('Check previous error text!',''); + + THROW @RETURN_STATUS,@RETURN_ERROR_TEXT,1; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; ELSE BEGIN + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('Procedure [PRDEX_SET_QUERY] worked just fine!',''); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + + --=============================================-- Call input content procedure --==============================================-- + EXEC @RETURN_STATUS = [PRDEX_GET_INPUT_CONTENT] @pPROFILE_ID = @PROFILE_ID, + @pTEST_MODE = @TEST_MODE, + @pASYNC_MODE = @ASYNC_MODE, + @pBATCH_ID = @BATCH_ID, + @pBATCH_CREATOR = @BATCH_CREATOR, + @pLANGUAGE = @LANGUAGE, + @pLOG_LEVEL = @LOG_LEVEL, + @pSTART_QUERY = @START_QUERY, + @pSTART_QUERY_VAR1 = @START_QUERY_VAR1, + @pSTART_QUERY_VAR2 = @START_QUERY_VAR2, + @pSTART_QUERY_VAR3 = @START_QUERY_VAR3, + @pSTART_QUERY_VAR4 = @START_QUERY_VAR4, + @pSTART_QUERY_VAR5 = @START_QUERY_VAR5, + @pMAIN_QUERY = @MAIN_QUERY, + @pMAIN_QUERY_VAR1 = @MAIN_QUERY_VAR1, + @pMAIN_QUERY_VAR2 = @MAIN_QUERY_VAR2, + @pMAIN_QUERY_VAR3 = @MAIN_QUERY_VAR3, + @pMAIN_QUERY_VAR4 = @MAIN_QUERY_VAR4, + @pMAIN_QUERY_VAR5 = @MAIN_QUERY_VAR5, + @pEND_QUERY = @END_QUERY, + @pEND_QUERY_VAR1 = @END_QUERY_VAR1, + @pEND_QUERY_VAR2 = @END_QUERY_VAR2, + @pEND_QUERY_VAR3 = @END_QUERY_VAR3, + @pEND_QUERY_VAR4 = @END_QUERY_VAR4, + @pEND_QUERY_VAR5 = @END_QUERY_VAR5, + @pFORCE = @FORCE, + @pPROFILE_NAME = @PROFILE_NAME, + @pMANDANTOR = @MANDANTOR, + @pEXPORT_TYPE = @EXPORT_TYPE, + @pEXPORT_NUMBER_SCHEMA = @EXPORT_NUMBER_SCHEMA, + @pDEFAULT_DATA_SEPARATOR = @DEFAULT_DATA_SEPARATOR, + @pTBDEX_TMP_TABLE_SCHEMA = @TBDEX_TMP_TABLE_SCHEMA, + @pTBDEX_TMP_TABLE_NAME = @TBDEX_TMP_TABLE_NAME, + @pTBDEX_TMP_TABLE_SCHEMA_AND_NAME = @TBDEX_TMP_TABLE_SCHEMA_AND_NAME, + @pTBDEX_TMP_TABLE_COLUMNS = @TBDEX_TMP_TABLE_COLUMNS, + @pTBDEX_TMP_TABLE_DROP_QUERY = @TBDEX_TMP_TABLE_DROP_QUERY, + @pTBDEX_TMP_TABLE_CREATE_QUERY = @TBDEX_TMP_TABLE_CREATE_QUERY, + @pTBDEX_TMP_TABLE_INSERT_QUERY = @TBDEX_TMP_TABLE_INSERT_QUERY, + @pREFERENCE1 = @REFERENCE1, + @pREFERENCE2 = @REFERENCE2, + @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, + @pREFERENCE5 = @REFERENCE5, + @pEXTERNAL_REFERENCE1 = @EXTERNAL_REFERENCE1, + @pEXTERNAL_REFERENCE2 = @EXTERNAL_REFERENCE2, + @pEXTERNAL_REFERENCE3 = @EXTERNAL_REFERENCE3, + @pEXTERNAL_REFERENCE4 = @EXTERNAL_REFERENCE4, + @pEXTERNAL_REFERENCE5 = @EXTERNAL_REFERENCE5; + + IF (@RETURN_STATUS <> 0) BEGIN + + --====================================================-- exception / error --====================================================-- + SET @RETURN_STATUS = @RETURN_STATUS; + SET @RETURN_STATUS_TEXT = concat('Error occurred in [PRDEX_GET_INPUT_CONTENT]!',''); + SET @RETURN_ERROR_TEXT = concat('Check previous error text!',''); + + THROW @RETURN_STATUS,@RETURN_ERROR_TEXT,1; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; ELSE BEGIN + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('Procedure [PRDEX_GET_INPUT_CONTENT] worked just fine!',''); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + FETCH NEXT FROM CURSOR_MAINPROCESSING INTO @REFERENCE1,@REFERENCE2,@REFERENCE3,@REFERENCE4,@REFERENCE5,@EXTERNAL_REFERENCE1,@EXTERNAL_REFERENCE2,@EXTERNAL_REFERENCE3,@EXTERNAL_REFERENCE4,@EXTERNAL_REFERENCE5,@EXPORT_NUMBER_COUNTER,@EXPORT_NUMBER; + END + CLOSE CURSOR_MAINPROCESSING; + DEALLOCATE CURSOR_MAINPROCESSING; + ----------------------------------------------------------------------------------------------------------------------------------- + + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('END PROCEDURE [',@MY_PROCEDURE_NAME,'] @ ',CONVERT(NVARCHAR(50),GETDATE(),120)); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT ''; + PRINT @RETURN_STATUS_TEXT; + PRINT '===================================================================================================='; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + RETURN @RETURN_STATUS; + +END TRY BEGIN CATCH + + --====================================================-- exception / error --====================================================-- + IF (@@TRANCOUNT > 0) BEGIN + ROLLBACK TRANSACTION; + END; + + PRINT 'ERROR: ' + @RETURN_ERROR_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO','WARN','ERROR')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'ERROR', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = CASE WHEN @RETURN_STATUS > 50000 THEN @RETURN_STATUS ELSE 50000 END; + SET @RETURN_STATUS_TEXT = concat('END PROCEDURE [',@MY_PROCEDURE_NAME,'] @ ',CONVERT(NVARCHAR(50),GETDATE(),120)); + SET @RETURN_ERROR_TEXT = concat('ERROR MESSAGE: ',CONVERT(NVARCHAR(500),ERROR_MESSAGE())); + + PRINT 'ERROR IN PROCEDURE: [' + @MY_PROCEDURE_NAME + ']' + char(13) + @RETURN_ERROR_TEXT; + PRINT @RETURN_STATUS_TEXT; + PRINT '===================================================================================================='; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO','WARN','ERROR')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'ERROR', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + RETURN @RETURN_STATUS; + +END CATCH; +GO \ No newline at end of file diff --git a/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_RUN_POSTPROCESSING].sql b/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_RUN_POSTPROCESSING].sql new file mode 100644 index 0000000..923db48 --- /dev/null +++ b/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_RUN_POSTPROCESSING].sql @@ -0,0 +1,555 @@ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +-- [PRDEX_RUN_POSTPROCESSING] +-- ================================================================= +-- Sub procedure to run POSTPROCESSING steps +-- +-- Returns: INTEGER; 0 = ok; 0 <> not ok +-- ================================================================= +-- Copyright (c) 2025 by Digital Data GmbH +-- +-- Digital Data GmbH • Ludwig-Rinn-Strasse 16 • D-35452 Heuchelheim +-- Tel.: 0641/202360 • E-Mail: info-flow@digitaldata.works +-- ================================================================= +-- Creation Date / Author: 01.08.2025 / MK +-- Version Date / Editor: 01.08.2025 / MK +-- Version Number: 1.0.0.0 +-- ================================================================= +-- History: +-- 01.08.2025 / MK - First Version + +CREATE OR ALTER PROCEDURE [dbo].[PRDEX_RUN_POSTPROCESSING]( + @pPROFILE_ID BIGINT, + @pTEST_MODE BIT, + @pASYNC_MODE BIT, + @pBATCH_ID NVARCHAR(25), + @pBATCH_CREATOR NVARCHAR(50), + @pLANGUAGE NVARCHAR(10), + @pLOG_LEVEL NVARCHAR(25), + @pSTART_QUERY NVARCHAR(MAX), + @pSTART_QUERY_VAR1 NVARCHAR(50), + @pSTART_QUERY_VAR2 NVARCHAR(50), + @pSTART_QUERY_VAR3 NVARCHAR(50), + @pSTART_QUERY_VAR4 NVARCHAR(50), + @pSTART_QUERY_VAR5 NVARCHAR(50), + @pMAIN_QUERY NVARCHAR(MAX), + @pMAIN_QUERY_VAR1 NVARCHAR(50), + @pMAIN_QUERY_VAR2 NVARCHAR(50), + @pMAIN_QUERY_VAR3 NVARCHAR(50), + @pMAIN_QUERY_VAR4 NVARCHAR(50), + @pMAIN_QUERY_VAR5 NVARCHAR(50), + @pEND_QUERY NVARCHAR(MAX), + @pEND_QUERY_VAR1 NVARCHAR(50), + @pEND_QUERY_VAR2 NVARCHAR(50), + @pEND_QUERY_VAR3 NVARCHAR(50), + @pEND_QUERY_VAR4 NVARCHAR(50), + @pEND_QUERY_VAR5 NVARCHAR(50), + @pFORCE BIT, + @pPROFILE_NAME NVARCHAR(50), + @pMANDANTOR NVARCHAR(50), + @pEXPORT_TYPE NVARCHAR(50), + @pDEFAULT_DATA_SEPARATOR NVARCHAR(10), + @pTBDEX_TMP_TABLE_SCHEMA NVARCHAR(150), + @pTBDEX_TMP_TABLE_NAME NVARCHAR(150), + @pTBDEX_TMP_TABLE_COLUMNS NVARCHAR(MAX) +) +AS +BEGIN TRY + + SET NOCOUNT ON; + + -- declare new vars because of parameter sniffing + DECLARE @PROFILE_ID BIGINT = @pPROFILE_ID, + @TEST_MODE BIT = @pTEST_MODE, + @ASYNC_MODE BIT = @pASYNC_MODE, + @BATCH_ID NVARCHAR(25) = @pBATCH_ID, + @BATCH_CREATOR NVARCHAR(128) = ISNULL(@pBATCH_CREATOR,OBJECT_NAME(@@PROCID)), + @LANGUAGE NVARCHAR(10) = @pLANGUAGE, + @LOG_LEVEL NVARCHAR(25) = UPPER(ISNULL(@pLOG_LEVEL,'INFO')), + @START_QUERY NVARCHAR(MAX) = @pSTART_QUERY, + @START_QUERY_VAR1 NVARCHAR(50) = @pSTART_QUERY_VAR1, + @START_QUERY_VAR2 NVARCHAR(50) = @pSTART_QUERY_VAR2, + @START_QUERY_VAR3 NVARCHAR(50) = @pSTART_QUERY_VAR3, + @START_QUERY_VAR4 NVARCHAR(50) = @pSTART_QUERY_VAR4, + @START_QUERY_VAR5 NVARCHAR(50) = @pSTART_QUERY_VAR5, + @MAIN_QUERY NVARCHAR(MAX) = @pMAIN_QUERY, + @MAIN_QUERY_VAR1 NVARCHAR(50) = @pMAIN_QUERY_VAR1, + @MAIN_QUERY_VAR2 NVARCHAR(50) = @pMAIN_QUERY_VAR2, + @MAIN_QUERY_VAR3 NVARCHAR(50) = @pMAIN_QUERY_VAR3, + @MAIN_QUERY_VAR4 NVARCHAR(50) = @pMAIN_QUERY_VAR4, + @MAIN_QUERY_VAR5 NVARCHAR(50) = @pMAIN_QUERY_VAR5, + @END_QUERY NVARCHAR(MAX) = @pEND_QUERY, + @END_QUERY_VAR1 NVARCHAR(50) = @pEND_QUERY_VAR1, + @END_QUERY_VAR2 NVARCHAR(50) = @pEND_QUERY_VAR2, + @END_QUERY_VAR3 NVARCHAR(50) = @pEND_QUERY_VAR3, + @END_QUERY_VAR4 NVARCHAR(50) = @pEND_QUERY_VAR4, + @END_QUERY_VAR5 NVARCHAR(50) = @pEND_QUERY_VAR5, + @FORCE BIT = @pFORCE, + @PROFILE_NAME NVARCHAR(50) = @pPROFILE_NAME, + @MANDANTOR NVARCHAR(50) = @pMANDANTOR, + @EXPORT_TYPE NVARCHAR(10) = @pEXPORT_TYPE, + @DEFAULT_DATA_SEPARATOR NVARCHAR(50) = @pDEFAULT_DATA_SEPARATOR, + @TBDEX_TMP_TABLE_SCHEMA NVARCHAR(150) = @pTBDEX_TMP_TABLE_SCHEMA, + @TBDEX_TMP_TABLE_NAME NVARCHAR(150) = @pTBDEX_TMP_TABLE_NAME, + @TBDEX_TMP_TABLE_COLUMNS NVARCHAR(MAX) = @pTBDEX_TMP_TABLE_COLUMNS; + + -- declare virtual table for POSTPROCESSING steps + DECLARE @vTBDEX_CFG_RESOURCES_POSTPROCESSING as TABLE ( + [GUID] BIGINT NOT NULL, + [PROFILE_ID] BIGINT NOT NULL, + [SEQUENCE] TINYINT NOT NULL, + [POSTPROCESSING_NAME] NVARCHAR(50) NOT NULL, + [POSTPROCESSING_TYPE] NVARCHAR(10) NOT NULL, + [POSTPROCESSING_QUERY] NVARCHAR(max) NOT NULL, + [ERROR_ACTION] NVARCHAR(25) NOT NULL); + + -- declare runtime vars + DECLARE @MY_PROCEDURE_NAME NVARCHAR(128) = OBJECT_NAME(@@PROCID); + DECLARE @ACTIVE_FLAG BIT = 1, + @INACTIVE_FLAG BIT = 0, + @STEP_COUNTER INT = 0, + @ROW_COUNT SMALLINT = 0, + @GUID BIGINT = 0, + @SEQUENCE TINYINT = 0, + @POSTPROCESSING_NAME NVARCHAR(50) = NULL, + @POSTPROCESSING_TYPE NVARCHAR(10) = NULL, + @POSTPROCESSING_QUERY NVARCHAR(MAX) = NULL, + @ERROR_ACTION NVARCHAR(25) = NULL, + @REFERENCE1 NVARCHAR(150) = NULL, + @REFERENCE2 NVARCHAR(150) = NULL, + @REFERENCE3 NVARCHAR(150) = NULL, + @REFERENCE4 NVARCHAR(150) = NULL, + @REFERENCE5 NVARCHAR(150) = NULL, + @PLACEHOLDER_NAME NVARCHAR(50) = 'QUERY_POSTPROCESSING', + @PLACEHOLDER NVARCHAR(MAX) = NULL, + @PLACEHOLDER_TYPE NVARCHAR(10) = 'CONST', + @HAS_UNRESOLVED_PLACEHOLDER BIT = 0, + @HAS_RESTRICTED_SQL BIT = 0, + @RETURN_STATUS INT = 0, + @RETURN_STATUS_TEXT NVARCHAR(MAX) = concat('START PROCEDURE [',@MY_PROCEDURE_NAME,'] @ ',CONVERT(varchar(50),GETDATE(),120)), + @RETURN_ERROR_TEXT NVARCHAR(MAX) = ''; + + PRINT '===================================================================================================='; + PRINT @RETURN_STATUS_TEXT; + PRINT ''; + PRINT 'PARAMETER01 - @PROFILE_ID: ' + CONVERT(NVARCHAR(50),ISNULL(@PROFILE_ID,'')); + PRINT 'PARAMETER02 - @TEST_MODE: ' + CONVERT(NVARCHAR(50),ISNULL(@TEST_MODE,'')); + PRINT 'PARAMETER03 - @ASYNC_MODE: ' + CONVERT(NVARCHAR(50),ISNULL(@ASYNC_MODE,'')); + PRINT 'PARAMETER04 - @BATCH_ID: ' + CONVERT(NVARCHAR(50),ISNULL(@BATCH_ID,'')); + PRINT 'PARAMETER05 - @BATCH_CREATOR: ' + CONVERT(NVARCHAR(50),ISNULL(@BATCH_CREATOR,'')); + PRINT 'PARAMETER06 - @LANGUAGE: ' + CONVERT(NVARCHAR(50),ISNULL(@LANGUAGE,'')); + PRINT 'PARAMETER07 - @LOG_LEVEL: ' + CONVERT(NVARCHAR(50),ISNULL(@LOG_LEVEL,'')); + PRINT 'PARAMETER08 - @START_QUERY: ' + CONVERT(NVARCHAR(50),ISNULL(@START_QUERY,'')); + PRINT 'PARAMETER09 - @START_QUERY_VAR1: ' + CONVERT(NVARCHAR(50),ISNULL(@START_QUERY_VAR1,'')); + PRINT 'PARAMETER10 - @START_QUERY_VAR2: ' + CONVERT(NVARCHAR(50),ISNULL(@START_QUERY_VAR2,'')); + PRINT 'PARAMETER11 - @START_QUERY_VAR3: ' + CONVERT(NVARCHAR(50),ISNULL(@START_QUERY_VAR3,'')); + PRINT 'PARAMETER12 - @START_QUERY_VAR4: ' + CONVERT(NVARCHAR(50),ISNULL(@START_QUERY_VAR4,'')); + PRINT 'PARAMETER13 - @START_QUERY_VAR5: ' + CONVERT(NVARCHAR(50),ISNULL(@START_QUERY_VAR5,'')); + PRINT 'PARAMETER14 - @MAIN_QUERY: ' + CONVERT(NVARCHAR(50),ISNULL(@MAIN_QUERY,'')); + PRINT 'PARAMETER15 - @MAIN_QUERY_VAR1: ' + CONVERT(NVARCHAR(50),ISNULL(@MAIN_QUERY_VAR1,'')); + PRINT 'PARAMETER16 - @MAIN_QUERY_VAR2: ' + CONVERT(NVARCHAR(50),ISNULL(@MAIN_QUERY_VAR2,'')); + PRINT 'PARAMETER17 - @MAIN_QUERY_VAR3: ' + CONVERT(NVARCHAR(50),ISNULL(@MAIN_QUERY_VAR3,'')); + PRINT 'PARAMETER18 - @MAIN_QUERY_VAR4: ' + CONVERT(NVARCHAR(50),ISNULL(@MAIN_QUERY_VAR4,'')); + PRINT 'PARAMETER19 - @MAIN_QUERY_VAR5: ' + CONVERT(NVARCHAR(50),ISNULL(@MAIN_QUERY_VAR5,'')); + PRINT 'PARAMETER20 - @END_QUERY: ' + CONVERT(NVARCHAR(50),ISNULL(@END_QUERY,'')); + PRINT 'PARAMETER21 - @END_QUERY_VAR1: ' + CONVERT(NVARCHAR(50),ISNULL(@END_QUERY_VAR1,'')); + PRINT 'PARAMETER22 - @END_QUERY_VAR2: ' + CONVERT(NVARCHAR(50),ISNULL(@END_QUERY_VAR2,'')); + PRINT 'PARAMETER23 - @END_QUERY_VAR3: ' + CONVERT(NVARCHAR(50),ISNULL(@END_QUERY_VAR3,'')); + PRINT 'PARAMETER24 - @END_QUERY_VAR4: ' + CONVERT(NVARCHAR(50),ISNULL(@END_QUERY_VAR4,'')); + PRINT 'PARAMETER25 - @END_QUERY_VAR5: ' + CONVERT(NVARCHAR(50),ISNULL(@END_QUERY_VAR5,'')); + PRINT 'PARAMETER26 - @FORCE: ' + CONVERT(NVARCHAR(50),ISNULL(@FORCE,'')); + PRINT 'PARAMETER27 - @PROFILE_NAME: ' + CONVERT(NVARCHAR(50),ISNULL(@PROFILE_NAME,'')); + PRINT 'PARAMETER28 - @MANDANTOR: ' + CONVERT(NVARCHAR(50),ISNULL(@MANDANTOR,'')); + PRINT 'PARAMETER29 - @EXPORT_TYPE: ' + CONVERT(NVARCHAR(50),ISNULL(@EXPORT_TYPE,'')); + PRINT 'PARAMETER30 - @DEFAULT_DATA_SEPARATOR: ' + CONVERT(NVARCHAR(50),ISNULL(@DEFAULT_DATA_SEPARATOR,'')); + PRINT 'PARAMETER31 - @TBDEX_TMP_TABLE_SCHEMA: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_TMP_TABLE_SCHEMA,'')); + PRINT 'PARAMETER32 - @TBDEX_TMP_TABLE_NAME: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_TMP_TABLE_NAME,'')); + PRINT 'PARAMETER33 - @TBDEX_TMP_TABLE_COLUMNS: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_TMP_TABLE_COLUMNS,'')); + PRINT ''; + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + + --===================================================-- POSTPROCESSING steps --===================================================-- + IF (@TEST_MODE = 1) OR (@ASYNC_MODE = 1) BEGIN + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('TEST_MODE and/or ASYNC_MODE are enabled!','Exiting...'); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('END PROCEDURE [',@MY_PROCEDURE_NAME,'] @ ',CONVERT(NVARCHAR(50),GETDATE(),120)); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT @RETURN_STATUS_TEXT; + PRINT '===================================================================================================='; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + RETURN @RETURN_STATUS; + + END; ELSE BEGIN + + INSERT INTO @vTBDEX_CFG_RESOURCES_POSTPROCESSING([GUID],[PROFILE_ID],[SEQUENCE],[POSTPROCESSING_NAME],[POSTPROCESSING_TYPE],[POSTPROCESSING_QUERY],[ERROR_ACTION]) + SELECT TOP 100 PERCENT [GUID],[PROFILE_ID],[SEQUENCE],[PLACEHOLDER_NAME], [PLACEHOLDER_TYPE],LTRIM(RTRIM([PLACEHOLDER])),CASE WHEN [ERROR_ACTION] = 1 THEN 'CONTINUE' ELSE 'STOP' END + FROM [TBDEX_CFG_RESOURCES] + WHERE [PROFILE_ID] IN (@PROFILE_ID,0) AND [ACTIVE] = @ACTIVE_FLAG AND LTRIM(RTRIM([PLACEHOLDER_NAME])) = @PLACEHOLDER_NAME + ORDER BY [PROFILE_ID] ASC,[GUID] DESC; + + SET @ROW_COUNT = (ISNULL((SELECT COUNT(*) FROM @vTBDEX_CFG_RESOURCES_POSTPROCESSING),0)); + IF (@ROW_COUNT = 0) BEGIN + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('Found no assigned POSTPROCESSING steps in [TBDEX_CFG_RESOURCES] table! ',', Exiting POSTPROCESSING...'); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'WARN: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; ELSE BEGIN + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('Found ',@ROW_COUNT,' assigned POSTPROCESSING steps in [TBDEX_CFG_RESOURCES] table!',', Engaging POSTPROCESSING...'); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT ''; + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + + --================================================-- Run loop for POSTPROCESSING --===============================================-- + DECLARE CURSOR_POSTPROCESSING CURSOR + LOCAL FAST_FORWARD FOR + SELECT [GUID] as 'GUID', + [PROFILE_ID] as 'PROFILE_ID', + [SEQUENCE] as 'SEQUENCE', + [POSTPROCESSING_NAME] as 'POSTPROCESSING_NAME', + [POSTPROCESSING_TYPE] as 'POSTPROCESSING_TYPE', + [POSTPROCESSING_QUERY] as 'POSTPROCESSING_QUERY', + [ERROR_ACTION] as 'ERROR_ACTION' + FROM @vTBDEX_CFG_RESOURCES_POSTPROCESSING + ORDER BY [PROFILE_ID] ASC,[SEQUENCE] ASC, [GUID] DESC; + + OPEN CURSOR_POSTPROCESSING + FETCH NEXT FROM CURSOR_POSTPROCESSING INTO @GUID, @PROFILE_ID, @SEQUENCE, @POSTPROCESSING_NAME, @POSTPROCESSING_TYPE, @POSTPROCESSING_QUERY, @ERROR_ACTION; + WHILE @@FETCH_STATUS = 0 + BEGIN + SET @STEP_COUNTER = @STEP_COUNTER + 1; + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('Running POSTPROCESSING step with GUID: ',@GUID,'. The set "ERROR_ACTION" behavior is: ',@ERROR_ACTION); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT ''; + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + + BEGIN TRY + + --==================================================-- Handle placeholders --==================================================-- + PRINT ''; + PRINT 'Replacing placeholders...'; + + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%PROFILE_ID%',ISNULL(@PROFILE_ID,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%TEST_MODE%',ISNULL(@TEST_MODE,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%ASYNC_MODE%',ISNULL(@ASYNC_MODE,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%BATCH_ID%',ISNULL(@BATCH_ID,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%BATCH_CREATOR%',ISNULL(@BATCH_CREATOR,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%LANGUAGE%',ISNULL(@LANGUAGE,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%LOG_LEVEL%',ISNULL(@LOG_LEVEL,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%START_QUERY%',ISNULL(@START_QUERY,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%START_QUERY_VAR1%',ISNULL(@START_QUERY_VAR1,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%START_QUERY_VAR2%',ISNULL(@START_QUERY_VAR2,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%START_QUERY_VAR3%',ISNULL(@START_QUERY_VAR3,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%START_QUERY_VAR4%',ISNULL(@START_QUERY_VAR4,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%START_QUERY_VAR5%',ISNULL(@START_QUERY_VAR5,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%MAIN_QUERY%',ISNULL(@MAIN_QUERY,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%MAIN_QUERY_VAR1%',ISNULL(@MAIN_QUERY_VAR1,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%MAIN_QUERY_VAR2%',ISNULL(@MAIN_QUERY_VAR2,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%MAIN_QUERY_VAR3%',ISNULL(@MAIN_QUERY_VAR3,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%MAIN_QUERY_VAR4%',ISNULL(@MAIN_QUERY_VAR4,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%MAIN_QUERY_VAR5%',ISNULL(@MAIN_QUERY_VAR5,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%END_QUERY%',ISNULL(@END_QUERY,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%END_QUERY_VAR1%',ISNULL(@END_QUERY_VAR1,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%END_QUERY_VAR2%',ISNULL(@END_QUERY_VAR2,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%END_QUERY_VAR3%',ISNULL(@END_QUERY_VAR3,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%END_QUERY_VAR4%',ISNULL(@END_QUERY_VAR4,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%END_QUERY_VAR5%',ISNULL(@END_QUERY_VAR5,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%FORCE%',ISNULL(@FORCE,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%MY_PROCEDURE_NAME%',ISNULL(@MY_PROCEDURE_NAME,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%PROFILE_NAME%',ISNULL(@PROFILE_NAME,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%MANDANTOR%',ISNULL(@MANDANTOR,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%EXPORT_TYPE%',ISNULL(@EXPORT_TYPE,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%REFERENCE1%',ISNULL(@REFERENCE1,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%REFERENCE2%',ISNULL(@REFERENCE2,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%REFERENCE3%',ISNULL(@REFERENCE3,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%REFERENCE4%',ISNULL(@REFERENCE4,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%REFERENCE5%',ISNULL(@REFERENCE5,'')); + + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%TBDEX_TMP_TABLE_SCHEMA%',ISNULL(@TBDEX_TMP_TABLE_SCHEMA,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%TBDEX_TMP_TABLE_NAME%',ISNULL(@TBDEX_TMP_TABLE_NAME,'')); + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,'%TBDEX_TMP_TABLE_COLUMNS%',ISNULL(@TBDEX_TMP_TABLE_COLUMNS,'')); + + DECLARE CURSOR_PLACEHOLDER CURSOR + LOCAL FAST_FORWARD FOR + SELECT [PLACEHOLDER_NAME] as 'Placeholder_Name', [PLACEHOLDER] as 'Placeholder' + FROM [TBDEX_CFG_RESOURCES] + WHERE [PROFILE_ID] IN (0,@PROFILE_ID) AND [ACTIVE] = @ACTIVE_FLAG AND LTRIM(RTRIM([PLACEHOLDER_TYPE])) = @PLACEHOLDER_TYPE + ORDER BY [SEQUENCE] ASC; + + OPEN CURSOR_PLACEHOLDER + FETCH NEXT FROM CURSOR_PLACEHOLDER INTO @PLACEHOLDER_NAME,@PLACEHOLDER; + WHILE @@FETCH_STATUS = 0 + BEGIN + + SET @POSTPROCESSING_QUERY = REPLACE(@POSTPROCESSING_QUERY,concat('%',@PLACEHOLDER_NAME,'%'),ISNULL(@PLACEHOLDER,'')); + + FETCH NEXT FROM CURSOR_PLACEHOLDER INTO @PLACEHOLDER_NAME,@PLACEHOLDER; + END + CLOSE CURSOR_PLACEHOLDER; + DEALLOCATE CURSOR_PLACEHOLDER; + ----------------------------------------------------------------------------------------------------------------------------------- + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('Prepared "@POSTPROCESSING_QUERY" (length: ',LEN(@POSTPROCESSING_QUERY),', preview: ',LEFT(@POSTPROCESSING_QUERY,500),')'); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + --======================================================-- Safety checks --======================================================-- + EXEC [PRDEX_TEST_DYNAMIC_SQL] @pQUERY = @POSTPROCESSING_QUERY, + @pRETURN_STATUS = 50056, + @pQUERY_NAME = N'@POSTPROCESSING_QUERY'; + ----------------------------------------------------------------------------------------------------------------------------------- + + --=========================================-- Finally execute the POSTPROCESSING_QUERY --=========================================-- + EXEC sp_executesql @POSTPROCESSING_QUERY; + ----------------------------------------------------------------------------------------------------------------------------------- + + END TRY BEGIN CATCH + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 50018; + SET @RETURN_STATUS_TEXT = concat('',''); + SET @RETURN_ERROR_TEXT = CONVERT(NVARCHAR(500),ERROR_MESSAGE()); + + PRINT 'ERROR: ' + @RETURN_ERROR_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO','WARN','ERROR')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'ERROR', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + END CATCH; + ----------------------------------------------------------------------------------------------------------------------------------- + + IF (@RETURN_STATUS <> 0) BEGIN + + IF (@ERROR_ACTION <> 'CONTINUE') BEGIN + + --====================================================-- exception / error --====================================================-- + SET @RETURN_STATUS = @RETURN_STATUS; + SET @RETURN_STATUS_TEXT = concat('Error occurred in [PRDEX_RUN_POSTPROCESSING]!',' Exiting...'); + SET @RETURN_ERROR_TEXT = ISNULL(@RETURN_ERROR_TEXT,'Unknown postprocessing error.'); + + THROW @RETURN_STATUS,@RETURN_ERROR_TEXT,1; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; ELSE BEGIN + + --====================================================-- exception / error --====================================================-- + SET @RETURN_STATUS = @RETURN_STATUS; + SET @RETURN_STATUS_TEXT = concat('Error occurred in [PRDEX_RUN_POSTPROCESSING]!',' Continue...'); + SET @RETURN_ERROR_TEXT = ISNULL(@RETURN_ERROR_TEXT,'Unknown postprocessing error.'); + + PRINT 'ERROR: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO','WARN','ERROR')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'ERROR', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; + + END; ELSE BEGIN + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('Procedure [PRDEX_RUN_POSTPROCESSING] worked just fine!',''); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT ''; + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + FETCH NEXT FROM CURSOR_POSTPROCESSING INTO @GUID, @PROFILE_ID, @SEQUENCE, @POSTPROCESSING_NAME, @POSTPROCESSING_TYPE, @POSTPROCESSING_QUERY, @ERROR_ACTION; + END + CLOSE CURSOR_POSTPROCESSING; + DEALLOCATE CURSOR_POSTPROCESSING; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('END PROCEDURE [',@MY_PROCEDURE_NAME,'] @ ',CONVERT(NVARCHAR(50),GETDATE(),120)); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT ''; + PRINT @RETURN_STATUS_TEXT; + PRINT '===================================================================================================='; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + RETURN @RETURN_STATUS; + +END TRY BEGIN CATCH + + --====================================================-- exception / error --====================================================-- + IF (@@TRANCOUNT > 0) BEGIN + ROLLBACK TRANSACTION; + END; + + PRINT 'ERROR: ' + @RETURN_ERROR_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO','WARN','ERROR')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'ERROR', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = CASE WHEN @RETURN_STATUS > 50000 THEN @RETURN_STATUS ELSE 50000 END; + SET @RETURN_STATUS_TEXT = concat('END PROCEDURE [',@MY_PROCEDURE_NAME,'] @ ',CONVERT(NVARCHAR(50),GETDATE(),120)); + SET @RETURN_ERROR_TEXT = concat('ERROR MESSAGE: ',CONVERT(NVARCHAR(500),ERROR_MESSAGE())); + + PRINT 'ERROR IN PROCEDURE: [' + @MY_PROCEDURE_NAME + ']' + char(13) + @RETURN_ERROR_TEXT; + PRINT @RETURN_STATUS_TEXT; + PRINT '===================================================================================================='; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO','WARN','ERROR')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'ERROR', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + RETURN @RETURN_STATUS; + +END CATCH; +GO \ No newline at end of file diff --git a/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_RUN_PREPROCESSING].sql b/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_RUN_PREPROCESSING].sql new file mode 100644 index 0000000000000000000000000000000000000000..de6b037c2df651e7e09d6c31b8b3bcc5e41fe68f GIT binary patch literal 69414 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 literal 0 HcmV?d00001 diff --git a/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_SET_EXPORT_FILENAME].sql b/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_SET_EXPORT_FILENAME].sql new file mode 100644 index 0000000..9488f90 --- /dev/null +++ b/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_SET_EXPORT_FILENAME].sql @@ -0,0 +1,101 @@ +USE [DD_ECM] +GO + +/****** Object: StoredProcedure [dbo].[PRDEX_BUILD_FILE_NAME] Script Date: 08.12.2025 21:34:37 ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + + +-- TSQL Prozedur - Zentrale Logik zur Erstellung der Dateinamen f�r die Schnittstellendatei f�r Schleupen. + +-- MK // 04.10.2024 +-- 04.10.2024 MK Implementierung von SQL TRANSACTION +-- 14.10.2020 MK Initial + +CREATE OR ALTER PROCEDURE [dbo].[PRDEX_SET_EXPORT_FILENAME] + @JOB_GUID INT, -- Mandatory Parameter, to build the file name + @EXPORT_BOOKING_NUMBER VARCHAR(100), + @FILE_NAME VARCHAR(50) OUTPUT +AS + + PRINT '===============================' + PRINT 'PROCEDURE - START [PRCUST_EXPORT_POSTING_DATA_BUILD_FILE_NAME] @ ' + CONVERT(varchar(50),GETDATE(),120) + PRINT 'PARAMETER1 - @JOB_GUID: ' + CONVERT(varchar(50),@JOB_GUID) + PRINT '-------------------------------' + +BEGIN TRY + + SET XACT_ABORT ON; + + BEGIN TRANSACTION + + SET NOCOUNT ON; + + DECLARE + @FILE_NAME_SEPARATOR VARCHAR(1), + @FILE_BASE_NAME VARCHAR(50), + @FILE_RUNNING_NUMBER BIGINT, + @FILE_EXTENSION VARCHAR(4) + + SELECT @FILE_BASE_NAME = [FILE_BASE_NAME], + @FILE_NAME_SEPARATOR = [FILE_NAME_SEPARATOR], + @FILE_RUNNING_NUMBER = [FILE_RUNNING_NUMBER], + @FILE_EXTENSION = [FILE_EXTENSION] + FROM [TBCUST_EXPORT_POSTING_DATA_FILE_CONFIG] + WHERE [JOB_GUID] = @JOB_GUID + + IF (@EXPORT_BOOKING_NUMBER is null) or (LEN(@EXPORT_BOOKING_NUMBER) = 0) + BEGIN + SET @EXPORT_BOOKING_NUMBER = 1 + END + + PRINT '@FILE_BASE_NAME: ' + CONVERT(varchar(50),@FILE_BASE_NAME) + PRINT '@FILE_EXTENSION: ' + CONVERT(varchar(50),@FILE_EXTENSION) + PRINT '@FILE_NAME_SEPARATOR: ' + CONVERT(varchar(50),@FILE_NAME_SEPARATOR) + + SET @FILE_NAME = @FILE_BASE_NAME + @FILE_NAME_SEPARATOR + CONVERT(varchar(1000),@EXPORT_BOOKING_NUMBER) + '.' + @FILE_EXTENSION + PRINT '@FILE_NAME: ' + CONVERT(varchar(50),@FILE_NAME) + PRINT '@EXPORT_BOOKING_NUMBER: ' + CONVERT(varchar(100),@EXPORT_BOOKING_NUMBER) + + -- Set running number to next value... + SET @FILE_RUNNING_NUMBER = @FILE_RUNNING_NUMBER + 1 + PRINT '@FILE_RUNNING_NUMBER(new): ' + CONVERT(varchar(50),@FILE_RUNNING_NUMBER) + + -- ...and update value in TB + UPDATE [TBCUST_EXPORT_POSTING_DATA_FILE_CONFIG] + SET [FILE_RUNNING_NUMBER] = @FILE_RUNNING_NUMBER + WHERE [JOB_GUID] = @JOB_GUID + PRINT 'Set - new - FILE_RUNNING_NUMBER to table!' + + -- Failsafe + SET @FILE_NAME = ISNULL(@FILE_NAME,'undefined.txt') + + PRINT '@FILE_NAME: ' + CONVERT(varchar(50),@FILE_NAME) + + PRINT '-------------------------------' + PRINT 'PROCEDURE - END PRCUST_EXPORT_POSTING_DATA_BUILD_FILE_NAME @ ' + CONVERT(varchar(50),GETDATE(),120) + PRINT '===============================' + + COMMIT TRANSACTION + + --SELECT @FILE_NAME AS [FILE_NAME] + RETURN + +END TRY + +BEGIN CATCH + + ROLLBACK TRANSACTION + + PRINT 'ERROR IN PROCEDURE: ' + CONVERT(VARCHAR(50),ERROR_PROCEDURE()) + + ' - ERROR-MESSAGE: ' + + CONVERT(VARCHAR(500),ERROR_MESSAGE()) + --EXEC [PRCUST_EXPORT_POSTING_DATA_WRITE_LOG] @JOB_GUID, 'File:','Procedure: PRCUST_EXPORT_POSTING_DATA_CREATE_FILE', ERROR_PROCEDURE, ERROR_MESSAGE + RETURN 1 +END CATCH +GO + + diff --git a/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_SET_EXPORT_NUMBER].sql b/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_SET_EXPORT_NUMBER].sql new file mode 100644 index 0000000000000000000000000000000000000000..3e075b0a88743fc9db4445a0bd527b066137ee0f GIT binary patch literal 66130 zcmeI5dvg@Yk-+<3UBrEd@kLxncv%br?6r5f5J-Z>izH4G#v24dU|`pZ<#oV5{N?X1 zf0dJyS>4q=JyOp|ND~wD>h8*_%&N-DS7rU*{~lD^)nPTNZdbe2L3O`+Cf|>$2l6_Q zt9$bA->ZMC?#VB{?dkuPXZEDrcC{rX?#t)4Jb5U;?#g?++Aox){Fm|?RZpsi@&sl6 zE~ORbv-IzwK;0KO+KQd(PJ;C`)vaZ3Rj2)OJRVmcs-x;t^{V^RX@u2oAm!< z^<4hxolkOSB+oss{vl7jN)$L0+>8SILd{*l`GH`6uZq}uUHek*Q}wgd_*QEBi@>;_ zD84Nvp!e5u<*K}I$@^XP)8zj*)qlyAx6;lR)jtJ--gUUAP0d@OZ#Sjo@2h_$s{S}` z?V7avlC*kVuv@Qg%CCRO6Cu$(++wT1n#!L-H{rP z($YwYm+~|;xgz)8No#+SwtBs1tG7Q06=>~|wDhfDr+o-z{~+(%Lcvc$JFozEeO(nw zT@m_xC7(Vfcz&n)E@1jMf&D>nFT>tWRAXL7*vz2gLEn|OGU}+)+iGpLZ-q_kd7sT* z`Bo_QQRoh3{w270E4yhkk})|F?thf14xh<;064riWj<|7-?DbFzOYikJ7WO7cYgj?}Rg6ImX&Cs@77?D>7H!kKwaQJ&-zd?OLhybw{q=8}rr6p$u(1 zNUPG0v<D%(`_rjYu1$zDY=F@i)EjEQ?s z*V}UCcA`bIMNR548t=;U$ZW_>;C3i)m8%}gul;mI$3zpN_9rv*QX27$Uj89@>0B5I zynVscX7GwUp)%ucnyGtIH?p5fi(ilDjXm>sseLoG?6$yE=`KDA)D__!aF3V5KVQhY z_FQ-ftH4|N{8hexNmr1u;IJ>`-_PR}_?@hSBbn8dc%CFLq_Gcj?W2@FlDj|1=Ub5! zv>vFnDU^aL@SlxNexPF`as|DDjMc_Vj1%zWhTz@KIe0?(fkItLvKw%lrE;iU97bW4 z;g-tfkRv}qs<)QucXRaUc=VRn%eO->b1Uj;)^bfa-&Zm|wVwMj{!B+%OZ^aQ&EZ~_ z5qGEhYwC5?DwJnX&iZ~+IQW)8cdkS$Hqt05bH%n+!dIOZb*`GzLS_9j*DS-2w0~ZP1u*K)wHg`YgY@nmU%GkD32t6KF4Yrk1k`TE0R;L4N6{D7ccKuPZL63 zL(Z$~+`eBOWf)!cbgv2JTI1M&gXFcgL(JPT+gd_P%Cj|}2eUxc)uU@o_$5i0Xu_)Z zMXegm2;Tobtsi{8lhpzp96f+lfOUZt;=O#ARs`n#FT#JDx_M4R)>L={YY6%vYb5I% zGLXxg(C3Lf^(b+er-@!lHT`U^EYK6X%4ovjVh^d^WG~rRTzbvn&JI)8=le-^%VE`L z|FqWi9d%wylh+$Bpf0sTf(q9tY0V8k`6tatnSpTTz-N z8#4O$s>ecMpApw4ZC98FNz1^_dtWH5n1NNjHBCtCgF(7}Oh~HZpuMBR@$dT@Bzr<} z1urPUNP;sQiqxcbvR6X;QL@v1np{~c$VX^EY9Y7Y0h*82NZsamwRuH5R)yl&H@+K> zf5u`zEBI<*oG^C|G6NTT_?(4mw|5b24lo!-ctvIivt%km>-;_0HKjFqa znnw+^Fj_iRq#nJpCRXQ5V@m1hx+-+}i@fa%AA@eQ{lGvmO-iWd`n6D#M2P-U9Nf{pE|K-oxA-sQ0*;}WM@vGKxVtzH{*zRSsqaG0c6utEB~ES!^B z)wD_Gw4i5@&yj0pr^KqXH`-gUx@m79rJla0c$gL#jw?yqH2h2!?H*O8FXogfLtGX3 z>T5w#Q+|raRQ;l6Yj*DyHs^LvF+DJr5gmFwirYW0oGlRfdd zpjkhVIk_!SBG`q?7?&_xpI`>Axp%Y+uVFB2);Sbj*C%+Dyd_ z?1+4@xz+Rpw&A7yH3W9eI)}o`rH zYEk`7@ARz}O+@z`Y^9P>c0(e4DiqEoI*rk}oU~%oQrK-k%i3t9vG3PXOFfw={t@m2L(ib;5%e5M-rO!P8QYs4!Mzc9}cR&Sw?xRo@17&%?qF*X*geAsO@ zBHwzWUwOAw=oqfsW3aYhnQ&dS9d6nFLF?*J?~Bdnqi_I?2YexO`c?8;6LV<$242fm zA`Y4P{OUhTh&#ax{<8X=lu``JV^TRYx_Q&D$~bje+6ZO#>9gJaqA;;Mm`$TZ9V|;; z2YtVMIX}Q}u_g3j-v#@h;A*GOH<+>X5>d14h4ZpiX*UY z^JQjU4dbs*xoQ03?qu%4Lw}Rm{36i<&PqIr&Fb0aG*JQUJ%KmC57>o5Br^Mrh#})Y zlt&&QCi!>cSwA%2Dse-jdTy1(vWfl|Wxp;y?sQ%9gPaFCKUk!Epfmh|jH@4IOd)If z+-~k48WFyYyt)>OV<`+H{8;crgT<4+ct3i81QZ>2J;$R*pF9h~o-w#Q2 z)qCN{bxYBTl!mA5W_4bkctt5yw;>=$ssvNEk6UTV)}>ODeVUSKjB`=^^b;s0Z>qLi z=V#q#9$U~Xi;onXOJ&zZcIv7Z&u3fN>r&SGIbxu+Z?@ycnD(W1+?di1yq0b4xY;P{ z5)B#+<0O{$yK%MY!Ug{fF;lwN3D0)yjWRsvmaGi)Y7Rv`*N&4zDNA8W)!Tv%_^^i> zO=?ftVz^EBH#*-oxyAY~=Vur7pY!pYJ{Of9Io?Jc9W&e;e*FL{yL!))?FIWI^L)Ox zmr@MQL5eQ;d@V9i?i+b8?J-?5jX7g{ypMilD~8!){y4CHRnkD(+ErTXbUj;~J*Iu; z^tIBgk9DZBm1ccurI8W3_?N9$DwY8Bf$sJ;OU-Qd z*S7h-wBRg$j-HhoomVU^IBGjKiDGHNG5xx3+v&0xG_4;*Sh%*owBR85u`c5~URrQ; zWGpQ>CtVMmkDJV=eC(uf&qsNqj?*Mce)IVa<;agmtPIgJG5dmgDV|IIgm>a6!!xFP z9o{7m8YSn`CWA^1N(*eMn%_&KL)!MVdV~!8ORW>S7u;fCu>0D+THB@SrHFtj`-lB% zGkX#md;NZMZ!uQp>AQ~A2CP^E7tP!wfY=@VP}<09wK2&>B7p*}m=y?rs_h*-?F zoEWw~m;65t4Z7nGvMAgq;uRoz%Ccd&SF0^Y09FG0U9p^J5YYSy^vsGpQLn3S1S7Q7 zHKlKfb_~}fUh2ts-v_=h+6s+#l64WQrtj&E5n8%aL`yKPXjA@l#MLs;5u0Uu@tI4u zTVLnRq4ex_k{js9SVL@+(yji4wt*c|jw`j|Phl?Kk^NefvAwOdmwQBp65*la4F2^~ ziW9)wPrQKU9K-vHr{8o^#sP7H`jqOcmZj{?I0oZLyh6km(jITq{P~{oKmAs`&T6EH za;QV0r1}lrPZqs*%ofIbv_kYN>3%w$F?G9R%+raN{kilvS$b`r&(8CR5y4_X6bLb8 zng^KGk!aBv4`w6rTCgwrwHW)=j%$AlYsqfwqjLDz5!JLAeHZ(6TC-p0{n?HmS&zsz@lhmgSbUywB#KQQ19BcBN!+{Q zYsJOp=Z1aG*YAjoNfztxf-Jc$(We?88ud>&GFk0od9`MkW*Buyc5T=$)>tBPPS*=v z6CI^2|6~k^(7X>l^iJh4xow7PUa#@{D7Qonl57VmscFUoazjT9 zOitetY3jMiQ?JLChnzN1Uh1pse~~227!6O$>z?gquBxtVQi=(^!oGZPCev7+U+S{Z z|BlqNCcQweXZqqGW!+elQrk&~-jcg$Hqhcf8JHZ-@Q@wrbeB zQZKqH@oAaCw1@4V>C>9Y;V_Lq^0n}8r&sqF($YRQW82}Hxn4TIe=7N&<$YD9 z8Edyar4@cFsq6mn~F?h9D9r7iOLbr zx-B5ew0*4s%oH1?UAs#dg+p5hyk66-RSPV67%a-5bk9l;v%>^T%R2t&W*=z7<8!qT zoL?J3$x5)~`nuZHxjtNj915D7M}1J5_qa<_F}c0&-!+|J`VM7Vhvz4E=a6;HIge8K zS96fUOL7@KR<}RQF7XZT;hHYrm#~SF&pdM&*f`hOcacAH&SRV+Ue#-58)Nf%v)$#9 zBlnZF1sfjL#N1jJ>!K%e4l%!fXP@`9&Fj9}f1mQxH2=~pZG+oi!(2SS;l!OEMBCPL z-rmSR?CwNiyb;}-*bFQSWO(^l$je}SX`VdkB6A_f-MK;JElW93DP+{q@yNCL@kfJ9 zEgHRvM`|RqNcZ5pl9)|q6V^EL7#&srBj4EZh+^UD{M$zjN(-X2;u(!Txx6S3>`LOf?UM!%LbbqPVQvFUB6e!$wMu1zf84JMACB)Ih23l%gJLD!LYvHsgPi8kUo;@gN&L$LIo%+I9I8K$SQqf>f> zzKDLcQ_GQ)P%KNmo>l1!9{rp#QU&o;a zqZ}PW&)0}!ezsFKiCMQ)4f`1p82T(Drj38aOu^Hiu5&x;YljXzM134>~E$&M1A?I?U9;e8% z3iazxB63PH0(`l7Dh5|eXG(CrE&wi2w|*LcUaMzi>mKvXSpZLFO=r&)5bM|> zjS^|ey=KmIuI4k)vYa>X#K<$azeZpIlV|CVz8SV>$FU^)Q)~13kgIyz$ZYlkSI(OZ z5P2W#((=W4u(yr@Xfhu;B|@bZv?8PvBo@u2Zka$dXX{b2Lc~2+i))+DlV}mGpP_qQ zT8|!vhGQ0Rq6G7m)MbQb-t}2e7bmMeQN1xP$nEmFH!_}fX)P>80y~asgNyw$&)?ej z=g%{Et@?A;FKRD3l<}cly}Y+=nw5T6dzE{oT^j;*Lf-K0)T%y~_bexaJcD#}M8Ke36bj+aozPyreB97Nw>#|6kljJ&v z`!OF*C6tK&GiI!CD+U6(CYuDJ)di0b**b8`XQE{E%9^0g>`3$%L9Ez)2vd*`LwpE z7T!n8juMqxwfoxwqRyc!quE&MI@kHMw=9Oran!q&C8zMx=91GR|926rE?6|0_7(Vl z>H6u}UCy`VWhrN?jseedzGX2nBe6PmpEbn1U5wo8k~Q_6-SdW^h|A>6@UpJWb7-4+ z9+`e+r|IeO+@a@E2dBH6#*VE+PYq;m8|S&S>+q$M#-``mDxWvhMVEQ$;^-{c@0Yr` z&hnFe<~(AN^Im8CdE7Im`{;9jJ~KsMX!Pg*93pUC?hiM6i< zIiELK(51unk{9WYQ7Na3OR4kvrEB5mgL3oYI@x!P=guW) zeUVm}c3f@kfg&YIroH4vx?@!G@d@_xT9+LzwUC{fY(nIsw+Mv~Y5&qEnN@F6#DZF7 z*vmwY-o>@e=@Dat&_67SnX_2^bxVHd(YFqPr!)(jMKyal>|2zqdwA=myVg>VSAv@Y zTVeJu(~NWOTD`6H(`qR}J&yOz@HtM|P z_v>m*&JQwoeiUn-?QBp?B8+TlIv4v9PzW%t98cGc{Ecurv2wc z-X^WJf9YY`l((VYGt=5MOB?!(@w!)?)@d7#Q+nvum1xz!b$M$pk_6C>D{GLhL%te$ z>}s5WoV=o0KjT%8p}Hg^CAZ%?#HBWupYR6nY}1yyvQ5MYwZ1T>`N)_*t8_NSl5$trDr?He*eiGM0ZJCaMG3y-Bw{4i07UT*GJfO1ONSx$M? zxuvJq$JJvfPWgGm$@#p=c}}O#8@r)epHs=HqvvgMcFeZS_*yh=oqBY*QsM+qsQQt4+bhI*0Ql5u8T=+{J zvS#A2^Gexi<0@yZx4dZ7iVU@?J&ju-Z|J1h+*Xha>dN%U^c@M^U?7dme0eDGfOS`|x zq~iW3TiF#c^*|a{xLVAaWJF9_Dj!*XXgK3?jQI@a6v2~Lunwar*y2PGmc~$9O^9+9{mV;4} zT_1={7q4mjt6homrP3^yGLimE(jO9*%21`dbqsR}5tvc(0+#MUvk_%cMlO>PrNKV0 zSkCV@v1r!VSHg76`j(i6E%}+ANG?cnKOA1em~i3x96H#qI_8&t?~S1?&bHjq^&J+EiRv3;<))Z-jI2=pR5TU-#Go0WQ7EO zn9o_s3crgohCv*OF(1ve6O)_Nq)wkv@NhD19>|M1#QD7Zaw;hgDW8w5?RRK8(`P&5 zSJy7;oA)WneOudo&aJh#bXKy~psV&pJuz8n;8_e#``lz}Pt(uRcRbkXYufYn&sOJo zo}sKQw9jGBj?3xN9zSEX>vw&w+lgddv1IiV)A~cYc&mDQ)QVE=bXRIyi8o~>)$V*RDbM|}AXBwe%P%vkg) zu05@-+>@PBpM>-9S>HRg$gxA4s84CpCU2MY5p143Pn^fMX?}FiCG{?sU zm2=-oEFF7t7;C1@ag7=|zdDg?Povt(XE`VO>2a#bIkaarXnGchX>&Tlay`k*>gg^e zeUvsm5glz*eIakoIQ(9u%Vr;OLZqIAs86DqTB#RlckBnzKd)8fQ88F?CE$e7=6Osd z{cfol-U>Q1+++D-bT4{6f$C>_|E;h5eYHX?N_Kvk+HQPSE>35Rbw<5QxlX<(#dbQD z?!~fkR}PVOXmhs`N2}k-cmJr?*S3dssWU1K;pF*FWKM0*HD;IbS>Nz!Sr6pvK$Ldc b`(mjxo`0_ITs@AEZaKH9GkSEu*VX?6cPI~K literal 0 HcmV?d00001 diff --git a/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_SET_QUERY].sql b/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_SET_QUERY].sql new file mode 100644 index 0000000000000000000000000000000000000000..7cec7dd039396a2a931d673191a9a9384070926e GIT binary patch literal 55220 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 L?MaKJeBS*(!EdY@ literal 0 HcmV?d00001 diff --git a/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_TEST_DYNAMIC_SQL].sql b/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_TEST_DYNAMIC_SQL].sql new file mode 100644 index 0000000..7378897 --- /dev/null +++ b/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_TEST_DYNAMIC_SQL].sql @@ -0,0 +1,67 @@ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +-- [PRDEX_TEST_DYNAMIC_SQL] +-- ================================================================= +-- Central guard for dynamic SQL safety checks +-- +-- Returns: INTEGER; 0 = ok; 0 <> nicht ok +-- ================================================================= +-- Copyright (c) 2025 by Digital Data GmbH +-- +-- Digital Data GmbH • Ludwig-Rinn-Strasse 16 • D-35452 Heuchelheim +-- Tel.: 0641/202360 • E-Mail: info-flow@digitaldata.works +-- ================================================================= +-- Creation Date / Author: 24.02.2026 / MK +-- Version Date / Editor: 24.02.2026 / MK +-- Version Number: 1.0.0.0 +-- ================================================================= +-- History: +-- 24.02.2026 / MK - First Version + +CREATE OR ALTER PROCEDURE [dbo].[PRDEX_TEST_DYNAMIC_SQL]( + @pQUERY NVARCHAR(MAX), + @pRETURN_STATUS INT, + @pQUERY_NAME NVARCHAR(100) = N'@QUERY' +) +AS +BEGIN TRY + + --================================================-- Set session options --===============================================-- + SET NOCOUNT ON; + ---------------------------------------------------------------------------------------------------------------------------- + + --=========================================-- declare new vars because of parameter sniffing --===========================-- + DECLARE @QUERY NVARCHAR(MAX) = ISNULL(@pQUERY,N''), + @RETURN_STATUS INT = ISNULL(@pRETURN_STATUS,50000), + @QUERY_NAME NVARCHAR(100) = ISNULL(@pQUERY_NAME,N'@QUERY'), + @HAS_UNRESOLVED_PLACEHOLDER BIT = 0, + @HAS_RESTRICTED_SQL BIT = 0, + @RETURN_ERROR_TEXT NVARCHAR(MAX) = N''; + ---------------------------------------------------------------------------------------------------------------------------- + + --=========================================-- validate query content --====================================================-- + SET @HAS_UNRESOLVED_PLACEHOLDER = CASE WHEN PATINDEX('%[%][A-Z_][A-Z0-9_][A-Z0-9_][A-Z0-9_][%]%',UPPER(@QUERY)) > 0 THEN 1 ELSE 0 END; + SET @HAS_RESTRICTED_SQL = CASE WHEN + (PATINDEX('%;--%',UPPER(@QUERY)) > 0) OR + (PATINDEX('%XP_CMDSHELL%',UPPER(@QUERY)) > 0) OR + (PATINDEX('%SP_CONFIGURE%',UPPER(@QUERY)) > 0) OR + (PATINDEX('%ALTER LOGIN%',UPPER(@QUERY)) > 0) OR + (PATINDEX('%CREATE LOGIN%',UPPER(@QUERY)) > 0) OR + (PATINDEX('%DROP DATABASE%',UPPER(@QUERY)) > 0) + THEN 1 ELSE 0 END; + ---------------------------------------------------------------------------------------------------------------------------- + + IF (@HAS_UNRESOLVED_PLACEHOLDER = 1) OR (@HAS_RESTRICTED_SQL = 1) BEGIN + SET @RETURN_ERROR_TEXT = CONCAT('Blocked unsafe query content in ',@QUERY_NAME,'. Detected unresolved placeholder tokens (%TOKEN%) or restricted statements.'); + THROW @RETURN_STATUS,@RETURN_ERROR_TEXT,1; + END; + + RETURN 0; + +END TRY BEGIN CATCH + THROW; +END CATCH; +GO \ No newline at end of file diff --git a/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_WRITE_FILE].sql b/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_WRITE_FILE].sql new file mode 100644 index 0000000..671caf6 --- /dev/null +++ b/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_WRITE_FILE].sql @@ -0,0 +1,417 @@ +USE [DD_ECM] +GO + +/****** Object: StoredProcedure [dbo].[PRDEX_WRITE_FILE] Script Date: 14.02.2026 17:23:12 ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + + +-- TSQL Prozedur welche die bereitsgesammelten Daten abruft und in Folge in eine Datei und ins Archiv schreibt. + +-- MK // 08.10.2024 +-- 08.10.2024 MK Implementierung @EXPORT_HEADER +-- 04.10.2024 MK Implementierung von SQL TRANSACTION und @BATCH_TIMESTAMP für Massenverarbeitung +-- 27.09.2024 MK NOLOCK und LOCAL FAST_FORWARD eingebaut +-- 30.01.2021 MK Initial + + ---- To run the file export in this procedure, it is n to reconfigure the sql server + -- sp_configure 'show advanced options', 1; + -- GO + -- RECONFIGURE WITH OVERRIDE; + -- GO + -- sp_configure 'Ole Automation Procedures', 1; + -- GO + -- RECONFIGURE WITH OVERRIDE; + -- GO + -- EXEC sp_configure 'xp_cmdshell', 1 + -- GO + -- RECONFIGURE WITH OVERRIDE + -- GO + +CREATE OR ALTER PROCEDURE [dbo].[PRDEX_WRITE_FILE] + @JOB_GUID INT, + @BATCH_TIMESTAMP VARCHAR(25) + +AS + + PRINT '===============================' + PRINT 'PROCEDURE - START [PRCUST_EXPORT_POSTING_DATA_WRITE_FILE] @ ' + CONVERT(varchar(50),GETDATE(),120) + PRINT 'PARAMETER1 - @JOB_GUID: ' + CONVERT(varchar(50),@JOB_GUID) + PRINT 'PARAMETER2 - @BATCH_TIMESTAMP: ' + CONVERT(varchar(50),@BATCH_TIMESTAMP) + +BEGIN TRY + + BEGIN TRANSACTION + + DECLARE @JOB_NAME VARCHAR(50), + @MANDATOR VARCHAR(50), + @EXPORT_TYPE VARCHAR(50), + @EXPORT_HEADER TINYINT, + @EXPORT_BOOKING_NUMBER VARCHAR(100), + @EXPORT_BOOKING_NUMBER_ARRAY VARCHAR(MAX), + @EXPORT_BOOKING_NUMBER_FIRST_VALUE VARCHAR(50), + @EXPORT_BOOKING_NUMBER_LAST_VALUE VARCHAR(50), + + @OLE_RESULT INT, + @FSO INT, + @GUID BIGINT, + @windreamDocID VARCHAR(MAX), + @windreamDocID_ARRAY VARCHAR(MAX), + @ERROR VARCHAR(1000), + @ERROR_LINE VARCHAR(10), + + @FILE_ID INT, + @FILE_CONTENT NVARCHAR(MAX) = '', + @FILE_CONTENT_HEAD NVARCHAR(MAX), + @FILE_CONTENT_HEAD_QUERY NVARCHAR(MAX), + @FILE_CONTENT_BODY_COUNT INT, + @FILE_CONTENT_BODY_LINE NVARCHAR(MAX), + + @FILE_NAME VARCHAR(50), + @FILE_PATH_TEMP VARCHAR(500), + @FILE_PATH_EXPORT VARCHAR(500), + @FILE_PATH_ARCHIV VARCHAR(500), + @FILE_PATH_ERROR VARCHAR(500), + @FILE_PATH_AND_NAME VARCHAR(600), + @FILE_NAME_SEPARATOR VARCHAR(10) = '-', + @FILE_DATA_SEPARATOR VARCHAR(10) = ';', + + @CMD VARCHAR(1000); + + -- declare runtime vars + DECLARE @MyProcedureName NVARCHAR(128) = OBJECT_NAME(@@PROCID); + DECLARE @DBName NVARCHAR(100), + @DBNameCount INT, + @FULLLOCALBACKUPPATH NVARCHAR(255), + @ProductVersion sql_variant, + @ProductMainVersion INT, + @ProductLevel sql_variant, + @ProductEdition sql_variant, + @ProductEditionSimpleString NVARCHAR(50), + @MySessionID NVARCHAR(50) = @@SPID, + @Date_YYYYMMDD NVARCHAR(20) = CONVERT(VARCHAR(20),GETDATE(),112), + @sysconfigurations INT = 0, + @SQLCommand NVARCHAR(1000) = NULL, + @CMDCommand NVARCHAR(1000) = NULL, + @CMDCommandResult INT = 0, + @return_status NVARCHAR(50) = 0, + @return_status_text NVARCHAR(MAX) = 'START ' + @MyProcedureName + ' @ ' + CONVERT(varchar(50),GETDATE(),120); + + + --==========================================-- Checking system configuration --============================================-- + + PRINT 'Checking system configuration'; + + SELECT @sysconfigurations = SUM(CAST([value] AS INT)) + FROM [master].[sys].[configurations] + WHERE [name] in ('show advanced options','Ole Automation Procedures','xp_cmdshell'); + + If (@sysconfigurations = 3) BEGIN + + SET @return_status = 0; + SET @return_status_text = 'System configuration does fit! (' + CONVERT(varchar,@sysconfigurations) + ')'; + PRINT @return_status_text; + + END; ELSE BEGIN + + PRINT 'System configuration does NOT fit! Try to reconfigure... (' + CONVERT(varchar,@sysconfigurations) + ')'; + + EXEC sp_configure 'show advanced options', 1; + RECONFIGURE WITH OVERRIDE; + EXEC sp_configure 'Ole Automation Procedures', 1; + RECONFIGURE WITH OVERRIDE; + EXEC sp_configure 'xp_cmdshell', 1; + RECONFIGURE WITH OVERRIDE; + + -- Check again + SELECT @sysconfigurations = SUM(CAST(value AS INT)) + FROM [master].[sys].[configurations] + WHERE [name] in ('show advanced options','Ole Automation Procedures','xp_cmdshell'); + + If (@sysconfigurations = 3) BEGIN + SET @return_status = 0; + SET @return_status_text = 'System configuration does fit, now! (' + CONVERT(varchar,@sysconfigurations) + ')'; + PRINT @return_status_text; + END; ELSE BEGIN + SET @return_status = 1; + SET @return_status_text = 'System configuration does NOT fit! (' + CONVERT(varchar,@sysconfigurations) + ')'; + PRINT @return_status_text; + END; + + END; + ----------------------------------------------------------------------------------------------------------------------------- + + DECLARE @FILE_CONTENT_BODY as TABLE (GUID INT, [EXPORT_BOOKING_NUMBER] VARCHAR(50),FILE_CONTENT_BODY_LINE VARCHAR(max)); + DECLARE @FILE_CONTENT_HEAD_Result as TABLE (ResultText VARCHAR(500)); + + -- Get Job infos + SELECT @JOB_NAME = [JOB_NAME], + @MANDATOR = [MANDANTOR], + @EXPORT_TYPE = [EXPORT_TYPE] + FROM [TBCUST_EXPORT_POSTING_DATA_JOB_CONFIG] (NOLOCK) + WHERE [GUID] = @JOB_GUID; + + -- Get Export config + SELECT @EXPORT_HEADER = [EXPORT_HEADER] + FROM [TBCUST_EXPORT_POSTING_DATA_FILE_CONFIG] (NOLOCK) + WHERE [JOB_GUID] = @JOB_GUID; + + -- Get export file content + INSERT INTO @FILE_CONTENT_BODY ([GUID],[EXPORT_BOOKING_NUMBER],[FILE_CONTENT_BODY_LINE]) + SELECT [T1].[GUID], [T1].[EXPORT_BOOKING_NUMBER], [T1].[FILE_CONTENT] + FROM [TBCUST_EXPORT_POSTING_DATA_FILE_CONTENT] AS [T1], + [TBCUST_EXPORT_POSTING_DATA_FILE_CONFIG] AS [T2] + WHERE [T1].[BATCH_TIMESTAMP] = @BATCH_TIMESTAMP + and [T2].[JOB_GUID] = @JOB_GUID + and [T2].[GUID] = [T1].[FILE_CONFIG_GUID] + ORDER BY [T1].[EXPORT_BOOKING_NUMBER] ASC; + + IF (SELECT COUNT(*) FROM [dbo].[TBCUST_EXPORT_POSTING_DATA_FILE_TEMP] (NOLOCK) WHERE [BATCH_TIMESTAMP] = @BATCH_TIMESTAMP) > 1 BEGIN + + -- Create a temporary table + PRINT 'Creating temp table'; + CREATE TABLE #TempBookingNumbers (EXPORT_BOOKING_NUMBER NVARCHAR(50), DOCID BIGINT); + + -- Insert the required data into the temporary table + PRINT 'Filling temp table'; + INSERT INTO #TempBookingNumbers + SELECT [EXPORT_BOOKING_NUMBER], [DOCID] + FROM [dbo].[TBCUST_EXPORT_POSTING_DATA_FILE_TEMP] (NOLOCK) + WHERE [BATCH_TIMESTAMP] = @BATCH_TIMESTAMP + ORDER BY [EXPORT_BOOKING_NUMBER],[DOCID] ASC; + + -- Get the aggregated values and concat + PRINT 'Retriving from temp table'; + SELECT @windreamDocID = STRING_AGG([DOCID],', '), + @EXPORT_BOOKING_NUMBER_ARRAY = STRING_AGG([EXPORT_BOOKING_NUMBER],', ') + FROM #TempBookingNumbers + + -- Get the first and last values + PRINT 'Getting lowest and hights numbers'; + SELECT @EXPORT_BOOKING_NUMBER_FIRST_VALUE = MIN([EXPORT_BOOKING_NUMBER]), + @EXPORT_BOOKING_NUMBER_LAST_VALUE = MAX([EXPORT_BOOKING_NUMBER]) + FROM #TempBookingNumbers; + + -- Drop the temporary table + PRINT 'Dropping temp table'; + DROP TABLE #TempBookingNumbers; + + PRINT '@EXPORT_BOOKING_NUMBER_ARRAY: ' + @EXPORT_BOOKING_NUMBER_ARRAY; + PRINT '@EXPORT_BOOKING_NUMBER_FIRST_VALUE: ' + convert(varchar,@EXPORT_BOOKING_NUMBER_FIRST_VALUE); + PRINT '@EXPORT_BOOKING_NUMBER_LAST_VALUE: ' + convert(varchar,@EXPORT_BOOKING_NUMBER_LAST_VALUE); + + SET @EXPORT_BOOKING_NUMBER = @EXPORT_BOOKING_NUMBER_FIRST_VALUE + @FILE_NAME_SEPARATOR + @EXPORT_BOOKING_NUMBER_LAST_VALUE; + + END; ELSE BEGIN + -- get windream DocId + SELECT @windreamDocID = [DOCID] + FROM [dbo].[TBCUST_EXPORT_POSTING_DATA_FILE_TEMP] (NOLOCK) + WHERE [BATCH_TIMESTAMP] = @BATCH_TIMESTAMP; + + -- get booking number + SELECT @EXPORT_BOOKING_NUMBER = [EXPORT_BOOKING_NUMBER] + FROM [dbo].[TBCUST_EXPORT_POSTING_DATA_FILE_TEMP] (NOLOCK) + WHERE [BATCH_TIMESTAMP] = @BATCH_TIMESTAMP; + END; + + SET @FILE_CONTENT_BODY_COUNT = (SELECT COUNT(*) FROM @FILE_CONTENT_BODY); + + -- Go on, if there is a contetn to export + IF (@FILE_CONTENT_BODY_COUNT > 0) + + BEGIN + PRINT '@FILE_CONTENT_BODY_COUNT (lines in FILE_CONTENT Table): ' + CONVERT(VARCHAR(50),@FILE_CONTENT_BODY_COUNT) + + -- Textdatei erzeugen + -- Create an instance of the file system object + EXECUTE @OLE_RESULT = sp_OACreate 'Scripting.FileSystemObject',@FSO OUT + -- If Scripting object cannot be created + IF (@OLE_RESULT <> 0) + + BEGIN + SET @ERROR = 'Scripting.FileSystemObject ' + ' Error code: ' + CONVERT(VARCHAR(300),@OLE_RESULT) + SET @ERROR_LINE = CONVERT(VARCHAR(10),@OLE_RESULT) + EXEC [PRCUST_EXPORT_POSTING_DATA_WRITE_JOB_LOG] @JOB_GUID,'File:','Procedure: PRCUST_EXPORT_POSTING_DATA_CREATE_FILE',@ERROR_LINE,@ERROR + END + + -- If Scripting object can be created + ELSE + BEGIN + + -- Open the text file for writing + SELECT @FILE_NAME_SEPARATOR = RTRIM(LTRIM(CONVERT(VARCHAR(10), [FILE_NAME_SEPARATOR]))), + @FILE_DATA_SEPARATOR = RTRIM(LTRIM(CONVERT(VARCHAR(10), [FILE_DATA_SEPARATOR]))), + @FILE_PATH_TEMP = RTRIM(LTRIM(CONVERT(VARCHAR(500),[FILE_PATH_TEMP]))), + @FILE_PATH_EXPORT = RTRIM(LTRIM(CONVERT(VARCHAR(500),[FILE_PATH_EXPORT]))), + @FILE_PATH_ARCHIV = RTRIM(LTRIM(CONVERT(VARCHAR(500),[FILE_PATH_ARCHIV]))), + @FILE_PATH_ERROR = RTRIM(LTRIM(CONVERT(VARCHAR(500),[FILE_PATH_ERROR]))) + FROM [TBCUST_EXPORT_POSTING_DATA_FILE_CONFIG] (NOLOCK) + WHERE [JOB_GUID] = @JOB_GUID + + PRINT ' ' + PRINT '@FILE_PATH_TEMP: ' + @FILE_PATH_TEMP + PRINT '@FILE_PATH_EXPORT: ' + @FILE_PATH_EXPORT + PRINT '@FILE_PATH_ARCHIV: ' + @FILE_PATH_ARCHIV + PRINT '@FILE_PATH_ERROR: ' + @FILE_PATH_ERROR + + -- Build Filename @FILE_NAME = + EXECUTE [dbo].[PRCUST_EXPORT_POSTING_DATA_BUILD_FILE_NAME] @JOB_GUID = @JOB_GUID, @EXPORT_BOOKING_NUMBER = @EXPORT_BOOKING_NUMBER, @FILE_NAME = @FILE_NAME OUTPUT; + PRINT 'Determined @FILE_NAME: ' + @FILE_NAME + + -- Build Filename and path + SET @FILE_PATH_AND_NAME = @FILE_PATH_TEMP + '\' + @FILE_NAME + PRINT 'Determined @FILE_PATH_AND_NAME: ' + @FILE_PATH_AND_NAME + + EXEC @OLE_RESULT = sp_OAMethod @FSO,'OpenTextFile',@FILE_ID OUT, @FILE_PATH_AND_NAME, 2, TRUE, 0 + IF @OLE_RESULT <> 0 + + BEGIN + SET @ERROR = 'OpenTextFile ' + ' Error code: ' + CONVERT(VARCHAR(300),@OLE_RESULT) + SET @ERROR_LINE = CONVERT(VARCHAR(10),@OLE_RESULT) + --EXEC [PRCUST_EXPORT_POSTING_DATA_WRITE_JOB_LOG] 'File:','Procedure: PRCUST_EXPORT_POSTING_DATA_CREATE_FILE',@ERROR_LINE,@ERROR + END + + -- If file could be created, fill the content + ELSE + + BEGIN + -- Set File Head + PRINT ' ' + PRINT '@JOB_NAME: ' + CONVERT(VARCHAR(50),@JOB_NAME) + + -- Write Headline to Var and file if enabled + IF (@EXPORT_HEADER = 0) + BEGIN + PRINT 'Header from [TBCUST_EXPORT_POSTING_DATA_FILE_TEMPLATE] should NOT be exported' + END + ELSE + BEGIN + PRINT 'Header from [TBCUST_EXPORT_POSTING_DATA_FILE_TEMPLATE] should be exported' + + SET @FILE_CONTENT_HEAD_QUERY = [dbo].[FNCUST_EXPORT_POSTING_DATA_BUILD_FILE_HEAD](@JOB_NAME,1) + PRINT '@FILE_CONTENT_HEAD_QUERY (unprocessed): ' + @FILE_CONTENT_HEAD_QUERY + + INSERT INTO @FILE_CONTENT_HEAD_RESULT + EXECUTE sp_executesql @FILE_CONTENT_Head_Query, N'@FILE_DATA_SEPARATOR varchar(1)', @FILE_DATA_SEPARATOR = @FILE_DATA_SEPARATOR; + + -- Get File Head and replace word wrap / line breaks + SET @FILE_CONTENT_HEAD = (SELECT * FROM @FILE_CONTENT_HEAD_RESULT) + SET @FILE_CONTENT_HEAD = REPLACE(@FILE_CONTENT_HEAD,CHAR(13) + CHAR(10),'') + PRINT '@FILE_CONTENT_Head: ' + @FILE_CONTENT_Head + + SET @FILE_CONTENT = @FILE_CONTENT_Head + @FILE_CONTENT + EXECUTE @OLE_RESULT = sp_OAMethod @FILE_ID,'WriteLine',NULL,@FILE_CONTENT + END + + -- prepare cursor to write every content line + DECLARE CURSOR_WRITE_FILE_CONTENT CURSOR + LOCAL FAST_FORWARD FOR + SELECT [FILE_CONTENT_BODY_LINE] + FROM @FILE_CONTENT_BODY + ORDER BY [EXPORT_BOOKING_NUMBER], [GUID] ASC + + OPEN CURSOR_WRITE_FILE_CONTENT + FETCH NEXT FROM CURSOR_WRITE_FILE_CONTENT INTO @FILE_CONTENT_BODY_LINE + WHILE @@FETCH_STATUS = 0 + BEGIN + -- Write the line into the file + PRINT '@FILE_CONTENT_BODY_LINE: ' + @FILE_CONTENT_BODY_LINE + EXECUTE @OLE_RESULT = sp_OAMethod @FILE_ID,'WriteLine',NULL,@FILE_CONTENT_BODY_LINE + + -- Set Var to write into Archiv + SET @FILE_CONTENT = @FILE_CONTENT + CHAR(13) + CHAR(10) + @FILE_CONTENT_BODY_LINE + + FETCH NEXT FROM CURSOR_WRITE_FILE_CONTENT INTO @FILE_CONTENT_BODY_LINE + END + CLOSE CURSOR_WRITE_FILE_CONTENT + DEALLOCATE CURSOR_WRITE_FILE_CONTENT + + -- Remove filesystemobject + EXECUTE @OLE_RESULT = sp_OADestroy @FILE_ID + EXECUTE @OLE_RESULT = sp_OADestroy @FSO + + -- prepare cursor to delete content lines + DECLARE CURSOR_DELETE_FILE_CONTENT CURSOR + LOCAL FAST_FORWARD FOR + SELECT [GUID] + FROM @FILE_CONTENT_BODY + + OPEN CURSOR_DELETE_FILE_CONTENT + FETCH NEXT FROM CURSOR_DELETE_FILE_CONTENT INTO @GUID + WHILE @@FETCH_STATUS = 0 + BEGIN + + DELETE + FROM [TBCUST_EXPORT_POSTING_DATA_FILE_CONTENT] + WHERE [GUID] = @GUID + + FETCH NEXT FROM CURSOR_DELETE_FILE_CONTENT INTO @GUID + END + CLOSE CURSOR_DELETE_FILE_CONTENT + DEALLOCATE CURSOR_DELETE_FILE_CONTENT + + -- Copy file to archiv folder + SET @CMD = 'copy "' + @FILE_PATH_AND_NAME + '" "' + @FILE_PATH_ARCHIV + '"' + EXEC master..xp_cmdshell @CMD, no_output + + -- If copy was successfull, move to output folder + SET @CMD = 'move "' + @FILE_PATH_AND_NAME + '" "' + @FILE_PATH_EXPORT + '"' + EXEC master..xp_cmdshell @CMD, no_output + PRINT 'File: ' + @FILE_PATH_AND_NAME + ' has been created, and moved to: ' + @FILE_PATH_EXPORT + + -- Archive to DB + IF LEN(@EXPORT_BOOKING_NUMBER_ARRAY) > 0 BEGIN + EXECUTE [dbo].[PRCUST_EXPORT_POSTING_DATA_WRITE_FILE_ARCHIV] @JOB_GUID, @windreamDocID, @BATCH_TIMESTAMP, @EXPORT_BOOKING_NUMBER_ARRAY, @FILE_NAME, @FILE_CONTENT; + END; ELSE BEGIN + EXECUTE [dbo].[PRCUST_EXPORT_POSTING_DATA_WRITE_FILE_ARCHIV] @JOB_GUID, @windreamDocID, @BATCH_TIMESTAMP, @EXPORT_BOOKING_NUMBER, @FILE_NAME, @FILE_CONTENT; + END; + PRINT 'Data now written to archive table' + + PRINT '' + PRINT 'PROCEDURE - END [PRCUST_EXPORT_POSTING_DATA_WRITE_FILE] @ ' + CONVERT(varchar(50),GETDATE(),120) + PRINT '===============================' + + COMMIT TRANSACTION + + END + + END + + END + + ELSE + + BEGIN + PRINT 'No rows in data table found!' + PRINT '' + PRINT 'Please check if File was already exported!' + PRINT '1. Check if windream Date [dwdate04] is set? Must be unset or 19700101! (19700101 = 1.1.1970)! ' + PRINT '2. Check if windream Status [szText33] is set to "erledigt"!' + PRINT '3. Check if WF: Zahlungsfreigabe der Geschäftsführung [Vektor_Boolean_06] ist set to true/wahr, ' + PRINT ' have to be false/falsch!' + PRINT '' + + PRINT 'PROCEDURE - END [PRCUST_EXPORT_POSTING_DATA_WRITE_FILE] @ ' + CONVERT(varchar(50),GETDATE(),120) + PRINT '===============================' + END + +END TRY + +BEGIN CATCH + + PRINT 'ERROR IN PROCEDURE: ' + CONVERT(VARCHAR(50),ERROR_PROCEDURE()) + + ' - ERROR-MESSAGE: ' + + CONVERT(VARCHAR(500),ERROR_MESSAGE()) + --EXEC [PRCUST_EXPORT_POSTING_DATA_WRITE_JOB_LOG] @JOB_GUID, 'File:','Procedure: PRCUST_EXPORT_POSTING_DATA_CREATE_FILE'--, CONVERT(VARCHAR(30),ERROR_PROCEDURE()), ERROR_MESSAGE + + ROLLBACK TRANSACTION + + RETURN 1; + +END CATCH +GO + + diff --git a/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_WRITE_LOG].sql b/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_WRITE_LOG].sql new file mode 100644 index 0000000..6eb4cbf --- /dev/null +++ b/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_WRITE_LOG].sql @@ -0,0 +1,139 @@ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +-- [PRDEX_WRITE_LOG] +-- ================================================================= +-- Writes log mesages to table [TBDEX_RUN_LOG] +-- +-- Returns: INTEGER; 0 = ok; 0 <> nicht ok +-- ================================================================= +-- Copyright (c) 2025 by Digital Data GmbH +-- +-- Digital Data GmbH � Ludwig-Rinn-Strasse 16 � D-35452 Heuchelheim +-- Tel.: 0641/202360 � E-Mail: info-flow@digitaldata.works +-- ================================================================= +-- Creation Date / Author: 01.08.2025 / MK +-- Version Date / Editor: 01.08.2025 / MK +-- Version Number: 1.0.0.0 +-- ================================================================= +-- History: +-- 01.08.2025 / MK - First Version + +CREATE OR ALTER PROCEDURE [dbo].[PRDEX_WRITE_LOG]( + @pLOG_LEVEL NVARCHAR(25), + @pPROFILE_ID BIGINT, + @pBATCH_ID NVARCHAR(25), + @pREFERENCE1 NVARCHAR(150), + @pREFERENCE2 NVARCHAR(150) = NULL, + @pREFERENCE3 NVARCHAR(150) = NULL, + @pREFERENCE4 NVARCHAR(150) = NULL, + @pREFERENCE5 NVARCHAR(150) = NULL, + @pRETURN_CODE INT, + @pMESSAGE1 NVARCHAR(max), + @pMESSAGE2 NVARCHAR(max) = NULL, + @pMESSAGE3 NVARCHAR(max) = NULL, + @pMESSAGE4 NVARCHAR(max) = NULL, + @pMESSAGE5 NVARCHAR(max) = NULL, + @pCOMMENT NVARCHAR(250) = NULL, + @pADDED_WHO NVARCHAR(50) = NULL +) +AS +BEGIN TRY + + SET NOCOUNT ON; + SET XACT_ABORT ON; + + -- declare new vars because of parameter sniffing + DECLARE @LOG_LEVEL NVARCHAR(25) = ISNULL(UPPER(@pLOG_LEVEL),'UNKNOWN'), + @PROFILE_ID BIGINT = @pPROFILE_ID, + @BATCH_ID NVARCHAR(25) = @pBATCH_ID, + @REFERENCE1 NVARCHAR(150) = ISNULL(@pREFERENCE1,''), + @REFERENCE2 NVARCHAR(150) = @pREFERENCE2, + @REFERENCE3 NVARCHAR(150) = @pREFERENCE3, + @REFERENCE4 NVARCHAR(150) = @pREFERENCE4, + @REFERENCE5 NVARCHAR(150) = @pREFERENCE5, + @RETURN_CODE INT = ISNULL(@pRETURN_CODE,99999), + @MESSAGE1 NVARCHAR(max) = ISNULL(@pMESSAGE1,''), + @MESSAGE2 NVARCHAR(max) = @pMESSAGE2, + @MESSAGE3 NVARCHAR(max) = @pMESSAGE3, + @MESSAGE4 NVARCHAR(max) = @pMESSAGE4, + @MESSAGE5 NVARCHAR(max) = @pMESSAGE5, + @COMMENT NVARCHAR(250) = @pCOMMENT, + @ADDED_WHO NVARCHAR(50) = ISNULL(@pADDED_WHO,OBJECT_NAME(@@PROCID)); + + -- declare runtime vars + DECLARE @MY_PROCEDURE_NAME NVARCHAR(128) = OBJECT_NAME(@@PROCID); + DECLARE @ACTIVE_FLAG BIT = 1, + @INACTIVE_FLAG BIT = 0, + @ERROR_MESSAGE NVARCHAR(4000), + @ERROR_STATE INT, + @ERROR_SEVERITY INT, + @RETURN_STATUS NVARCHAR(50) = 0, + @RETURN_STATUS_TEXT NVARCHAR(MAX) = concat('START PROCEDURE [',@MY_PROCEDURE_NAME,'] @ ',CONVERT(varchar(50),GETDATE(),120)), + @RETURN_ERROR_TEXT NVARCHAR(MAX) = ''; + + --================================================-- write log if table exists --================================================-- + IF NOT EXISTS (SELECT 1 FROM [INFORMATION_SCHEMA].[TABLES] WHERE [TABLE_NAME] = N'TBDEX_RUN_LOG') BEGIN + + --====================================================-- exception / error --====================================================-- + SET @RETURN_STATUS = 50015; + SET @RETURN_STATUS_TEXT = concat('',''); + SET @RETURN_ERROR_TEXT = concat('Cannot find target table ([TBDEX_RUN_LOG]) for logging!',''); + + THROW @RETURN_STATUS,@RETURN_ERROR_TEXT,1; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; ELSE BEGIN + + --=====================================================-- Write log line --======================================================-- + BEGIN TRANSACTION; + + INSERT INTO [TBDEX_RUN_LOG]([LOG_LEVEL], [PROFILE_ID], [BATCH_ID], [REFERENCE1], [REFERENCE2], [REFERENCE3], [REFERENCE4], [REFERENCE5], [RETURN_CODE], [MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [MESSAGE5], [COMMENT], [ADDED_WHO], [ADDED_WHEN]) + VALUES(@LOG_LEVEL, @PROFILE_ID, @BATCH_ID, @REFERENCE1, @REFERENCE2, @REFERENCE3, @REFERENCE4, @REFERENCE5, @RETURN_CODE, @MESSAGE1, @MESSAGE2, @MESSAGE3, @MESSAGE4, @MESSAGE5, @COMMENT, @ADDED_WHO, GETDATE()); + + IF (@@TRANCOUNT > 0) BEGIN + COMMIT TRANSACTION; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + RETURN @RETURN_STATUS; + +END TRY BEGIN CATCH + + --====================================================-- exception / error --====================================================-- + IF (@@TRANCOUNT > 0) BEGIN + ROLLBACK TRANSACTION; + END; + + PRINT 'ERROR: ' + @RETURN_ERROR_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = CASE WHEN @RETURN_STATUS > 50000 THEN @RETURN_STATUS ELSE 50000 END; + SET @RETURN_STATUS_TEXT = concat('END PROCEDURE [',@MY_PROCEDURE_NAME,'] @ ',CONVERT(NVARCHAR(50),GETDATE(),120)); + SET @RETURN_ERROR_TEXT = concat('ERROR MESSAGE: ',CONVERT(NVARCHAR(500),ERROR_MESSAGE())); + + PRINT 'ERROR IN PROCEDURE: [' + @MY_PROCEDURE_NAME + ']' + char(13) + @RETURN_ERROR_TEXT; + PRINT @RETURN_STATUS_TEXT; + PRINT '===================================================================================================='; + ----------------------------------------------------------------------------------------------------------------------------------- + + --==================================================-- Write to sql ERRORLOG --==================================================-- + SELECT @ERROR_MESSAGE = ERROR_MESSAGE(), + @ERROR_SEVERITY = ERROR_SEVERITY(), + @ERROR_STATE = ERROR_STATE(); + + RAISERROR (@ERROR_MESSAGE,@ERROR_SEVERITY,@ERROR_STATE); + ----------------------------------------------------------------------------------------------------------------------------------- + + RETURN @RETURN_STATUS; + +END CATCH; +GO + + diff --git a/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_WRITE_OUTPUT].sql b/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_WRITE_OUTPUT].sql new file mode 100644 index 0000000..2a63857 --- /dev/null +++ b/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_WRITE_OUTPUT].sql @@ -0,0 +1,574 @@ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +-- [PRDEX_WRITE_OUTPUT] +-- ================================================================= +-- Inserts data to the Output tables +-- +-- Returns: INTEGER; 0 = ok; 0 <> nicht ok +-- ================================================================= +-- Copyright (c) 2025 by Digital Data GmbH +-- +-- Digital Data GmbH • Ludwig-Rinn-Strasse 16 • D-35452 Heuchelheim +-- Tel.: 0641/202360 • E-Mail: info-flow@digitaldata.works +-- ================================================================= +-- Creation Date / Author: 01.08.2025 / MK +-- Version Date / Editor: 01.08.2025 / MK +-- Version Number: 1.0.0.0 +-- ================================================================= +-- History: +-- 01.08.2025 / MK - First Version + +CREATE OR ALTER PROCEDURE [dbo].[PRDEX_WRITE_OUTPUT] + @pPROFILE_ID BIGINT, + @pTEST_MODE BIT, + @pASYNC_MODE BIT, + @pBATCH_ID NVARCHAR(25), + @pBATCH_CREATOR NVARCHAR(50), + @pLANGUAGE NVARCHAR(10), + @pLOG_LEVEL NVARCHAR(25), + @pSTART_QUERY NVARCHAR(MAX), + @pSTART_QUERY_VAR1 NVARCHAR(50), + @pSTART_QUERY_VAR2 NVARCHAR(50), + @pSTART_QUERY_VAR3 NVARCHAR(50), + @pSTART_QUERY_VAR4 NVARCHAR(50), + @pSTART_QUERY_VAR5 NVARCHAR(50), + @pMAIN_QUERY NVARCHAR(MAX), + @pMAIN_QUERY_VAR1 NVARCHAR(50), + @pMAIN_QUERY_VAR2 NVARCHAR(50), + @pMAIN_QUERY_VAR3 NVARCHAR(50), + @pMAIN_QUERY_VAR4 NVARCHAR(50), + @pMAIN_QUERY_VAR5 NVARCHAR(50), + @pEND_QUERY NVARCHAR(MAX), + @pEND_QUERY_VAR1 NVARCHAR(50), + @pEND_QUERY_VAR2 NVARCHAR(50), + @pEND_QUERY_VAR3 NVARCHAR(50), + @pEND_QUERY_VAR4 NVARCHAR(50), + @pEND_QUERY_VAR5 NVARCHAR(50), + @pFORCE BIT, + @pPROFILE_NAME NVARCHAR(50), + @pMANDANTOR NVARCHAR(50), + @pEXPORT_TYPE NVARCHAR(50), + @pEXPORT_NUMBER_SCHEMA NVARCHAR(25), + @pDEFAULT_DATA_SEPARATOR NVARCHAR(10), + @pTBDEX_TMP_TABLE_SCHEMA SYSNAME, + @pTBDEX_TMP_TABLE_NAME SYSNAME, + @pTBDEX_TMP_TABLE_SCHEMA_AND_NAME NVARCHAR(150), + @pTBDEX_TMP_TABLE_DROP_QUERY NVARCHAR(MAX), + @pTBDEX_TMP_TABLE_COLUMNS NVARCHAR(MAX), + @pTBDEX_TMP_TABLE_CREATE_QUERY NVARCHAR(MAX), + @pTBDEX_TMP_TABLE_INSERT_QUERY NVARCHAR(MAX) + +AS +BEGIN TRY + + SET NOCOUNT ON; + + -- declare new vars because of parameter sniffing + DECLARE @PROFILE_ID BIGINT = @pPROFILE_ID, + @TEST_MODE BIT = @pTEST_MODE, + @ASYNC_MODE BIT = @pASYNC_MODE, + @BATCH_ID NVARCHAR(25) = @pBATCH_ID, + @BATCH_CREATOR NVARCHAR(128) = ISNULL(@pBATCH_CREATOR,OBJECT_NAME(@@PROCID)), + @LANGUAGE NVARCHAR(10) = @pLANGUAGE, + @LOG_LEVEL NVARCHAR(25) = UPPER(@pLOG_LEVEL), + @START_QUERY NVARCHAR(MAX) = @pSTART_QUERY, + @START_QUERY_VAR1 NVARCHAR(50) = @pSTART_QUERY_VAR1, + @START_QUERY_VAR2 NVARCHAR(50) = @pSTART_QUERY_VAR2, + @START_QUERY_VAR3 NVARCHAR(50) = @pSTART_QUERY_VAR3, + @START_QUERY_VAR4 NVARCHAR(50) = @pSTART_QUERY_VAR4, + @START_QUERY_VAR5 NVARCHAR(50) = @pSTART_QUERY_VAR5, + @MAIN_QUERY NVARCHAR(MAX) = @pMAIN_QUERY, + @MAIN_QUERY_VAR1 NVARCHAR(50) = @pMAIN_QUERY_VAR1, + @MAIN_QUERY_VAR2 NVARCHAR(50) = @pMAIN_QUERY_VAR2, + @MAIN_QUERY_VAR3 NVARCHAR(50) = @pMAIN_QUERY_VAR3, + @MAIN_QUERY_VAR4 NVARCHAR(50) = @pMAIN_QUERY_VAR4, + @MAIN_QUERY_VAR5 NVARCHAR(50) = @pMAIN_QUERY_VAR5, + @END_QUERY NVARCHAR(MAX) = @pEND_QUERY, + @END_QUERY_VAR1 NVARCHAR(50) = @pEND_QUERY_VAR1, + @END_QUERY_VAR2 NVARCHAR(50) = @pEND_QUERY_VAR2, + @END_QUERY_VAR3 NVARCHAR(50) = @pEND_QUERY_VAR3, + @END_QUERY_VAR4 NVARCHAR(50) = @pEND_QUERY_VAR4, + @END_QUERY_VAR5 NVARCHAR(50) = @pEND_QUERY_VAR5, + @FORCE BIT = @pFORCE, + @PROFILE_NAME NVARCHAR(50) = @pPROFILE_NAME, + @MANDANTOR NVARCHAR(50) = @pMANDANTOR, + @EXPORT_TYPE NVARCHAR(50) = @pEXPORT_TYPE, + @EXPORT_NUMBER_SCHEMA NVARCHAR(25) = @pEXPORT_NUMBER_SCHEMA, + @DEFAULT_DATA_SEPARATOR NVARCHAR(50) = @pDEFAULT_DATA_SEPARATOR, + @TBDEX_TMP_TABLE_SCHEMA SYSNAME = @pTBDEX_TMP_TABLE_SCHEMA, + @TBDEX_TMP_TABLE_NAME SYSNAME = @pTBDEX_TMP_TABLE_NAME, + @TBDEX_TMP_TABLE_SCHEMA_AND_NAME NVARCHAR(150) = @pTBDEX_TMP_TABLE_SCHEMA_AND_NAME, + @TBDEX_TMP_TABLE_COLUMNS NVARCHAR(MAX) = @pTBDEX_TMP_TABLE_COLUMNS, + @TBDEX_TMP_TABLE_DROP_QUERY NVARCHAR(MAX) = @pTBDEX_TMP_TABLE_DROP_QUERY, + @TBDEX_TMP_TABLE_CREATE_QUERY NVARCHAR(MAX) = @pTBDEX_TMP_TABLE_CREATE_QUERY, + @TBDEX_TMP_TABLE_INSERT_QUERY NVARCHAR(MAX) = @pTBDEX_TMP_TABLE_INSERT_QUERY; + + DECLARE @vTBDEX_OUT_SOURCE TABLE ( + [PROFILE_ID] BIGINT, + [BATCH_ID] NVARCHAR(25), + [CONTENT] NVARCHAR(MAX), + [REFERENCE1] NVARCHAR(150), + [REFERENCE2] NVARCHAR(150), + [REFERENCE3] NVARCHAR(150), + [REFERENCE4] NVARCHAR(150), + [REFERENCE5] NVARCHAR(150), + [EXTERNAL_REFERENCE1] NVARCHAR(2000), + [EXTERNAL_REFERENCE2] NVARCHAR(2000), + [EXTERNAL_REFERENCE3] NVARCHAR(2000), + [EXTERNAL_REFERENCE4] NVARCHAR(2000), + [EXTERNAL_REFERENCE5] NVARCHAR(2000) + ); + + DECLARE @vTBDEX_OUT_INSERTED TABLE ( + [OUT_ID] BIGINT, + [PROFILE_ID] BIGINT, + [BATCH_ID] NVARCHAR(25), + [REFERENCE1] NVARCHAR(150), + [REFERENCE2] NVARCHAR(150), + [REFERENCE3] NVARCHAR(150), + [REFERENCE4] NVARCHAR(150), + [REFERENCE5] NVARCHAR(150), + [EXTERNAL_REFERENCE1] NVARCHAR(2000), + [EXTERNAL_REFERENCE2] NVARCHAR(2000), + [EXTERNAL_REFERENCE3] NVARCHAR(2000), + [EXTERNAL_REFERENCE4] NVARCHAR(2000), + [EXTERNAL_REFERENCE5] NVARCHAR(2000) + ); + + -- declare runtime vars + DECLARE @MY_PROCEDURE_NAME NVARCHAR(128) = OBJECT_NAME(@@PROCID); + DECLARE @ACTIVE_FLAG BIT = 1, + @INACTIVE_FLAG BIT = 0, + @ROW_COUNT1 INT = 0, + @QUERY_KEYWORD NVARCHAR(50) = 'QUERY', + @QUERY_SET_OUTPUT NVARCHAR(MAX) = NULL, + @PLACEHOLDER_NAME NVARCHAR(50) = NULL, + @PLACEHOLDER NVARCHAR(MAX) = NULL, + @PLACEHOLDER_TYPE NVARCHAR(10) = 'CONST', + @REFERENCE1 NVARCHAR(150) = NULL, + @REFERENCE2 NVARCHAR(150) = NULL, + @REFERENCE3 NVARCHAR(150) = NULL, + @REFERENCE4 NVARCHAR(150) = NULL, + @REFERENCE5 NVARCHAR(150) = NULL, + @RETURN_STATUS INT = 0, + @RETURN_STATUS_TEXT NVARCHAR(MAX) = concat('START PROCEDURE [',@MY_PROCEDURE_NAME,'] @ ',CONVERT(varchar(50),GETDATE(),120)), + @RETURN_ERROR_TEXT NVARCHAR(MAX) = ''; + + PRINT '===================================================================================================='; + PRINT @RETURN_STATUS_TEXT; + PRINT ''; + PRINT 'PARAMETER01 - @PROFILE_ID: ' + CONVERT(NVARCHAR(50),ISNULL(@PROFILE_ID,'')); + PRINT 'PARAMETER02 - @TEST_MODE: ' + CONVERT(NVARCHAR(50),ISNULL(@TEST_MODE,'')); + PRINT 'PARAMETER03 - @ASYNC_MODE: ' + CONVERT(NVARCHAR(50),ISNULL(@ASYNC_MODE,'')); + PRINT 'PARAMETER04 - @BATCH_ID: ' + CONVERT(NVARCHAR(50),ISNULL(@BATCH_ID,'')); + PRINT 'PARAMETER05 - @BATCH_CREATOR: ' + CONVERT(NVARCHAR(50),ISNULL(@BATCH_CREATOR,'')); + PRINT 'PARAMETER06 - @LANGUAGE: ' + CONVERT(NVARCHAR(50),ISNULL(@LANGUAGE,'')); + PRINT 'PARAMETER07 - @LOG_LEVEL: ' + CONVERT(NVARCHAR(50),ISNULL(@LOG_LEVEL,'')); + PRINT 'PARAMETER08 - @START_QUERY: ' + CONVERT(NVARCHAR(50),ISNULL(@START_QUERY,'')); + PRINT 'PARAMETER09 - @START_QUERY_VAR1: ' + CONVERT(NVARCHAR(50),ISNULL(@START_QUERY_VAR1,'')); + PRINT 'PARAMETER10 - @START_QUERY_VAR2: ' + CONVERT(NVARCHAR(50),ISNULL(@START_QUERY_VAR2,'')); + PRINT 'PARAMETER11 - @START_QUERY_VAR3: ' + CONVERT(NVARCHAR(50),ISNULL(@START_QUERY_VAR3,'')); + PRINT 'PARAMETER12 - @START_QUERY_VAR4: ' + CONVERT(NVARCHAR(50),ISNULL(@START_QUERY_VAR4,'')); + PRINT 'PARAMETER13 - @START_QUERY_VAR5: ' + CONVERT(NVARCHAR(50),ISNULL(@START_QUERY_VAR5,'')); + PRINT 'PARAMETER14 - @MAIN_QUERY: ' + CONVERT(NVARCHAR(50),ISNULL(@MAIN_QUERY,'')); + PRINT 'PARAMETER15 - @MAIN_QUERY_VAR1: ' + CONVERT(NVARCHAR(50),ISNULL(@MAIN_QUERY_VAR1,'')); + PRINT 'PARAMETER16 - @MAIN_QUERY_VAR2: ' + CONVERT(NVARCHAR(50),ISNULL(@MAIN_QUERY_VAR2,'')); + PRINT 'PARAMETER17 - @MAIN_QUERY_VAR3: ' + CONVERT(NVARCHAR(50),ISNULL(@MAIN_QUERY_VAR3,'')); + PRINT 'PARAMETER18 - @MAIN_QUERY_VAR4: ' + CONVERT(NVARCHAR(50),ISNULL(@MAIN_QUERY_VAR4,'')); + PRINT 'PARAMETER19 - @MAIN_QUERY_VAR5: ' + CONVERT(NVARCHAR(50),ISNULL(@MAIN_QUERY_VAR5,'')); + PRINT 'PARAMETER20 - @END_QUERY: ' + CONVERT(NVARCHAR(50),ISNULL(@END_QUERY,'')); + PRINT 'PARAMETER21 - @END_QUERY_VAR1: ' + CONVERT(NVARCHAR(50),ISNULL(@END_QUERY_VAR1,'')); + PRINT 'PARAMETER22 - @END_QUERY_VAR2: ' + CONVERT(NVARCHAR(50),ISNULL(@END_QUERY_VAR2,'')); + PRINT 'PARAMETER23 - @END_QUERY_VAR3: ' + CONVERT(NVARCHAR(50),ISNULL(@END_QUERY_VAR3,'')); + PRINT 'PARAMETER24 - @END_QUERY_VAR4: ' + CONVERT(NVARCHAR(50),ISNULL(@END_QUERY_VAR4,'')); + PRINT 'PARAMETER25 - @END_QUERY_VAR5: ' + CONVERT(NVARCHAR(50),ISNULL(@END_QUERY_VAR5,'')); + PRINT 'PARAMETER26 - @FORCE: ' + CONVERT(NVARCHAR(50),ISNULL(@FORCE,'')); + PRINT 'PARAMETER27 - @PROFILE_NAME: ' + CONVERT(NVARCHAR(50),ISNULL(@PROFILE_NAME,'')); + PRINT 'PARAMETER28 - @MANDANTOR: ' + CONVERT(NVARCHAR(50),ISNULL(@MANDANTOR,'')); + PRINT 'PARAMETER29 - @EXPORT_TYPE: ' + CONVERT(NVARCHAR(50),ISNULL(@EXPORT_TYPE,'')); + PRINT 'PARAMETER30 - @DEFAULT_DATA_SEPARATOR: ' + CONVERT(NVARCHAR(50),ISNULL(@DEFAULT_DATA_SEPARATOR,'')); + PRINT 'PARAMETER31 - @TBDEX_TMP_TABLE_SCHEMA: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_TMP_TABLE_SCHEMA,'')); + PRINT 'PARAMETER32 - @TBDEX_TMP_TABLE_NAME: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_TMP_TABLE_NAME,'')); + PRINT 'PARAMETER33 - @TBDEX_TMP_TABLE_SCHEMA_AND_NAME: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_TMP_TABLE_SCHEMA_AND_NAME,'')); + PRINT 'PARAMETER34 - @TBDEX_TMP_TABLE_COLUMNS: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_TMP_TABLE_COLUMNS,'')); + PRINT 'PARAMETER35 - @TBDEX_TMP_TABLE_DROP_QUERY: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_TMP_TABLE_DROP_QUERY,'')); + PRINT 'PARAMETER36 - @TBDEX_TMP_TABLE_CREATE_QUERY: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_TMP_TABLE_CREATE_QUERY,'')); + PRINT 'PARAMETER37 - @TBDEX_TMP_TABLE_INSERT_QUERY: ' + CONVERT(NVARCHAR(50),ISNULL(@TBDEX_TMP_TABLE_INSERT_QUERY,'')); + PRINT ''; + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + --====================================================-- Get end sql query --====================================================-- + IF (((UPPER(@END_QUERY) LIKE 'SELECT%') OR (UPPER(@END_QUERY) LIKE '%SELECT%')) AND (UPPER(@END_QUERY) LIKE '%FROM%')) BEGIN + + SET @QUERY_SET_OUTPUT = LTRIM(RTRIM(@END_QUERY)); + + END; ELSE IF ((SELECT count(*) + FROM [TBDEX_CFG_RESOURCES] + WHERE [PROFILE_ID] IN (0,@PROFILE_ID) AND [ACTIVE] = @ACTIVE_FLAG + AND LTRIM(RTRIM([PLACEHOLDER_NAME])) = @END_QUERY AND LTRIM(RTRIM([PLACEHOLDER_TYPE])) = @QUERY_KEYWORD) >= 1) BEGIN + + SET @QUERY_SET_OUTPUT = (SELECT TOP 1 LTRIM(RTRIM([PLACEHOLDER])) + FROM [TBDEX_CFG_RESOURCES] + WHERE [PROFILE_ID] IN (@PROFILE_ID,0) AND [ACTIVE] = @ACTIVE_FLAG + AND LTRIM(RTRIM([PLACEHOLDER_NAME])) = @END_QUERY AND LTRIM(RTRIM([PLACEHOLDER_TYPE])) = @QUERY_KEYWORD + ORDER BY [PROFILE_ID] ASC,[GUID] DESC); + + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + --=================================================-- Check first sql query --===================================================-- + IF (LEN(@QUERY_SET_OUTPUT) < 15) BEGIN + + --====================================================-- exception / error --====================================================-- + SET @RETURN_STATUS = 50001; + SET @RETURN_STATUS_TEXT = concat('Wrong call or configuraton!',''); + SET @RETURN_ERROR_TEXT = concat('Found no valid querys (query needs to be 15 chars or more)!',''); + + THROW @RETURN_STATUS,@RETURN_ERROR_TEXT,1; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; ELSE BEGIN + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('Found "QUERY_SET_OUTPUT" query: ',char(13),@QUERY_SET_OUTPUT); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + + --==============================================-- Get data separator for cols --===============================================-- + IF (LEN(@DEFAULT_DATA_SEPARATOR) > 0) BEGIN + + SET @TBDEX_TMP_TABLE_COLUMNS = REPLACE(@TBDEX_TMP_TABLE_COLUMNS,',',@DEFAULT_DATA_SEPARATOR) + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('The @TBDEX_TMP_TABLE_COLUMNS variable has been modified by the @DEFAULT_DATA_SEPARATOR variable: ',@TBDEX_TMP_TABLE_COLUMNS); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; ELSE BEGIN + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('The @TBDEX_TMP_TABLE_COLUMNS variable has NOT been modified by the @DEFAULT_DATA_SEPARATOR variable: ',@TBDEX_TMP_TABLE_COLUMNS); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + + --==================================================-- Handle placeholders --==================================================-- + PRINT 'Replacing placeholders...'; + + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%PROFILE_ID%',ISNULL(@PROFILE_ID,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%TEST_MODE%',ISNULL(@TEST_MODE,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%ASYNC_MODE%',ISNULL(@ASYNC_MODE,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%BATCH_ID%',ISNULL(@BATCH_ID,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%BATCH_CREATOR%',ISNULL(@BATCH_CREATOR,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%LANGUAGE%',ISNULL(@LANGUAGE,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%LOG_LEVEL%',ISNULL(@LOG_LEVEL,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%START_QUERY%',ISNULL(@START_QUERY,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%START_QUERY_VAR1%',ISNULL(@START_QUERY_VAR1,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%START_QUERY_VAR2%',ISNULL(@START_QUERY_VAR2,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%START_QUERY_VAR3%',ISNULL(@START_QUERY_VAR3,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%START_QUERY_VAR4%',ISNULL(@START_QUERY_VAR4,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%START_QUERY_VAR5%',ISNULL(@START_QUERY_VAR5,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%MAIN_QUERY%',ISNULL(@MAIN_QUERY,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%MAIN_QUERY_VAR1%',ISNULL(@MAIN_QUERY_VAR1,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%MAIN_QUERY_VAR2%',ISNULL(@MAIN_QUERY_VAR2,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%MAIN_QUERY_VAR3%',ISNULL(@MAIN_QUERY_VAR3,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%MAIN_QUERY_VAR4%',ISNULL(@MAIN_QUERY_VAR4,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%MAIN_QUERY_VAR5%',ISNULL(@MAIN_QUERY_VAR5,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%END_QUERY%',ISNULL(@END_QUERY,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%END_QUERY_VAR1%',ISNULL(@END_QUERY_VAR1,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%END_QUERY_VAR2%',ISNULL(@END_QUERY_VAR2,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%END_QUERY_VAR3%',ISNULL(@END_QUERY_VAR3,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%END_QUERY_VAR4%',ISNULL(@END_QUERY_VAR4,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%END_QUERY_VAR5%',ISNULL(@END_QUERY_VAR5,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%FORCE%',ISNULL(@FORCE,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%MY_PROCEDURE_NAME%',ISNULL(@MY_PROCEDURE_NAME,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%PROFILE_NAME%',ISNULL(@PROFILE_NAME,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%MANDANTOR%',ISNULL(@MANDANTOR,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%EXPORT_TYPE%',ISNULL(@EXPORT_TYPE,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%DEFAULT_DATA_SEPARATOR%',ISNULL(@DEFAULT_DATA_SEPARATOR,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%REFERENCE1%',ISNULL(@REFERENCE1,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%REFERENCE2%',ISNULL(@REFERENCE2,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%REFERENCE3%',ISNULL(@REFERENCE3,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%REFERENCE4%',ISNULL(@REFERENCE4,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%REFERENCE5%',ISNULL(@REFERENCE5,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%TBDEX_TMP_TABLE_SCHEMA%',ISNULL(@TBDEX_TMP_TABLE_SCHEMA,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%TBDEX_TMP_TABLE_NAME%',ISNULL(@TBDEX_TMP_TABLE_NAME,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%TBDEX_TMP_TABLE_COLUMNS%',ISNULL(@TBDEX_TMP_TABLE_COLUMNS,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%TBDEX_TMP_TABLE_DROP_QUERY%',ISNULL(@TBDEX_TMP_TABLE_DROP_QUERY,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%TBDEX_TMP_TABLE_CREATE_QUERY%',ISNULL(@TBDEX_TMP_TABLE_CREATE_QUERY,'')); + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,'%TBDEX_TMP_TABLE_INSERT_QUERY%',ISNULL(@TBDEX_TMP_TABLE_INSERT_QUERY,'')); + + DECLARE CURSOR_PLACEHOLDER CURSOR + LOCAL FAST_FORWARD FOR + SELECT [PLACEHOLDER_NAME] as 'Placeholder_Name', [PLACEHOLDER] as 'Placeholder' + FROM [TBDEX_CFG_RESOURCES] + WHERE [PROFILE_ID] IN (0,@PROFILE_ID) AND [ACTIVE] = @ACTIVE_FLAG AND LTRIM(RTRIM([PLACEHOLDER_TYPE])) = @PLACEHOLDER_TYPE + ORDER BY [SEQUENCE] ASC; + + OPEN CURSOR_PLACEHOLDER + FETCH NEXT FROM CURSOR_PLACEHOLDER INTO @PLACEHOLDER_NAME,@PLACEHOLDER; + WHILE @@FETCH_STATUS = 0 + BEGIN + + SET @QUERY_SET_OUTPUT = REPLACE(@QUERY_SET_OUTPUT,concat('%',@PLACEHOLDER_NAME,'%'),ISNULL(@PLACEHOLDER,'')); + + FETCH NEXT FROM CURSOR_PLACEHOLDER INTO @PLACEHOLDER_NAME,@PLACEHOLDER; + END + CLOSE CURSOR_PLACEHOLDER; + DEALLOCATE CURSOR_PLACEHOLDER; + ----------------------------------------------------------------------------------------------------------------------------------- + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('Prepared "@QUERY_SET_OUTPUT" (length: ',LEN(@QUERY_SET_OUTPUT),', preview: ',LEFT(@QUERY_SET_OUTPUT,500),')'); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT 'INFO: ' + @RETURN_STATUS_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + + --======================================================-- Safety checks --======================================================-- + EXEC [PRDEX_TEST_DYNAMIC_SQL] @pQUERY = @QUERY_SET_OUTPUT, + @pRETURN_STATUS = 50054, + @pQUERY_NAME = N'@QUERY_SET_OUTPUT'; + ----------------------------------------------------------------------------------------------------------------------------------- + + + --==================================================-- run insert statement --===================================================-- + INSERT INTO @vTBDEX_OUT_SOURCE ([PROFILE_ID],[BATCH_ID],[CONTENT],[REFERENCE1],[REFERENCE2],[REFERENCE3],[REFERENCE4],[REFERENCE5],[EXTERNAL_REFERENCE1],[EXTERNAL_REFERENCE2],[EXTERNAL_REFERENCE3],[EXTERNAL_REFERENCE4],[EXTERNAL_REFERENCE5]) + EXEC sp_executesql @QUERY_SET_OUTPUT; + ----------------------------------------------------------------------------------------------------------------------------------- + + BEGIN TRANSACTION; + + MERGE [TBDEX_OUT] AS [T] + USING ( + SELECT [SRC].[PROFILE_ID], + [SRC].[BATCH_ID], + [SRC].[CONTENT], + [SRC].[REFERENCE1], + [SRC].[REFERENCE2], + [SRC].[REFERENCE3], + [SRC].[REFERENCE4], + [SRC].[REFERENCE5], + [SRC].[EXTERNAL_REFERENCE1], + [SRC].[EXTERNAL_REFERENCE2], + [SRC].[EXTERNAL_REFERENCE3], + [SRC].[EXTERNAL_REFERENCE4], + [SRC].[EXTERNAL_REFERENCE5] + FROM @vTBDEX_OUT_SOURCE AS [SRC] + ) AS [S] + ON 1 = 0 + WHEN NOT MATCHED THEN + INSERT ([PROFILE_ID],[BATCH_ID],[CONTENT],[ADDED_WHO],[ADDED_WHEN]) + VALUES ([S].[PROFILE_ID],[S].[BATCH_ID],[S].[CONTENT],@BATCH_CREATOR,GETDATE()) + OUTPUT INSERTED.[GUID], + [S].[PROFILE_ID], + [S].[BATCH_ID], + [S].[REFERENCE1], + [S].[REFERENCE2], + [S].[REFERENCE3], + [S].[REFERENCE4], + [S].[REFERENCE5], + [S].[EXTERNAL_REFERENCE1], + [S].[EXTERNAL_REFERENCE2], + [S].[EXTERNAL_REFERENCE3], + [S].[EXTERNAL_REFERENCE4], + [S].[EXTERNAL_REFERENCE5] + INTO @vTBDEX_OUT_INSERTED ([OUT_ID],[PROFILE_ID],[BATCH_ID],[REFERENCE1],[REFERENCE2],[REFERENCE3],[REFERENCE4],[REFERENCE5],[EXTERNAL_REFERENCE1],[EXTERNAL_REFERENCE2],[EXTERNAL_REFERENCE3],[EXTERNAL_REFERENCE4],[EXTERNAL_REFERENCE5]); + + IF EXISTS ( + SELECT 1 + FROM @vTBDEX_OUT_INSERTED AS [OI] + OUTER APPLY ( + SELECT TOP 1 [TPR].[EXPORT_NUMBER] + FROM [TBDEX_TMP_PROCESS_REFERENCES] AS [TPR] WITH (SNAPSHOT) + WHERE [TPR].[PROFILE_ID] = [OI].[PROFILE_ID] + AND [TPR].[BATCH_ID] = [OI].[BATCH_ID] + AND ISNULL([TPR].[REFERENCE1],'') = ISNULL([OI].[REFERENCE1],'') + AND ISNULL([TPR].[REFERENCE2],'') = ISNULL([OI].[REFERENCE2],'') + AND ISNULL([TPR].[REFERENCE3],'') = ISNULL([OI].[REFERENCE3],'') + AND ISNULL([TPR].[REFERENCE4],'') = ISNULL([OI].[REFERENCE4],'') + AND ISNULL([TPR].[REFERENCE5],'') = ISNULL([OI].[REFERENCE5],'') + AND ISNULL([TPR].[EXTERNAL_REFERENCE1],'') = ISNULL([OI].[EXTERNAL_REFERENCE1],'') + AND ISNULL([TPR].[EXTERNAL_REFERENCE2],'') = ISNULL([OI].[EXTERNAL_REFERENCE2],'') + AND ISNULL([TPR].[EXTERNAL_REFERENCE3],'') = ISNULL([OI].[EXTERNAL_REFERENCE3],'') + AND ISNULL([TPR].[EXTERNAL_REFERENCE4],'') = ISNULL([OI].[EXTERNAL_REFERENCE4],'') + AND ISNULL([TPR].[EXTERNAL_REFERENCE5],'') = ISNULL([OI].[EXTERNAL_REFERENCE5],'') + AND [TPR].[ADDED_WHO] IN (@BATCH_CREATOR,@MY_PROCEDURE_NAME) + ORDER BY [TPR].[GUID] DESC + ) AS [MAP] + WHERE [MAP].[EXPORT_NUMBER] IS NULL + ) BEGIN + + SET @RETURN_STATUS = 50058; + SET @RETURN_STATUS_TEXT = concat('Missing EXPORT_NUMBER mapping for output references!',''); + SET @RETURN_ERROR_TEXT = concat('Could not resolve [TBDEX_TMP_PROCESS_REFERENCES].[EXPORT_NUMBER] for at least one output row.',''); + + THROW @RETURN_STATUS,@RETURN_ERROR_TEXT,1; + END; + + INSERT INTO [TBDEX_OUT_REFERENCES] ([OUT_ID],[REFERENCE1],[REFERENCE2],[REFERENCE3],[REFERENCE4],[REFERENCE5],[EXTERNAL_REFERENCE1],[EXTERNAL_REFERENCE2],[EXTERNAL_REFERENCE3],[EXTERNAL_REFERENCE4],[EXTERNAL_REFERENCE5],[EXPORT_NUMBER],[ADDED_WHO],[ADDED_WHEN]) + SELECT [OI].[OUT_ID], + ISNULL([OI].[REFERENCE1],''), + [OI].[REFERENCE2], + [OI].[REFERENCE3], + [OI].[REFERENCE4], + [OI].[REFERENCE5], + LEFT([OI].[EXTERNAL_REFERENCE1],255), + LEFT([OI].[EXTERNAL_REFERENCE2],255), + LEFT([OI].[EXTERNAL_REFERENCE3],255), + LEFT([OI].[EXTERNAL_REFERENCE4],255), + LEFT([OI].[EXTERNAL_REFERENCE5],255), + [MAP].[EXPORT_NUMBER], + @BATCH_CREATOR, + GETDATE() + FROM @vTBDEX_OUT_INSERTED AS [OI] + CROSS APPLY ( + SELECT TOP 1 [TPR].[EXPORT_NUMBER] + FROM [TBDEX_TMP_PROCESS_REFERENCES] AS [TPR] WITH (SNAPSHOT) + WHERE [TPR].[PROFILE_ID] = [OI].[PROFILE_ID] + AND [TPR].[BATCH_ID] = [OI].[BATCH_ID] + AND ISNULL([TPR].[REFERENCE1],'') = ISNULL([OI].[REFERENCE1],'') + AND ISNULL([TPR].[REFERENCE2],'') = ISNULL([OI].[REFERENCE2],'') + AND ISNULL([TPR].[REFERENCE3],'') = ISNULL([OI].[REFERENCE3],'') + AND ISNULL([TPR].[REFERENCE4],'') = ISNULL([OI].[REFERENCE4],'') + AND ISNULL([TPR].[REFERENCE5],'') = ISNULL([OI].[REFERENCE5],'') + AND ISNULL([TPR].[EXTERNAL_REFERENCE1],'') = ISNULL([OI].[EXTERNAL_REFERENCE1],'') + AND ISNULL([TPR].[EXTERNAL_REFERENCE2],'') = ISNULL([OI].[EXTERNAL_REFERENCE2],'') + AND ISNULL([TPR].[EXTERNAL_REFERENCE3],'') = ISNULL([OI].[EXTERNAL_REFERENCE3],'') + AND ISNULL([TPR].[EXTERNAL_REFERENCE4],'') = ISNULL([OI].[EXTERNAL_REFERENCE4],'') + AND ISNULL([TPR].[EXTERNAL_REFERENCE5],'') = ISNULL([OI].[EXTERNAL_REFERENCE5],'') + AND [TPR].[ADDED_WHO] IN (@BATCH_CREATOR,@MY_PROCEDURE_NAME) + ORDER BY [TPR].[GUID] DESC + ) AS [MAP]; + + COMMIT TRANSACTION; + ----------------------------------------------------------------------------------------------------------------------------------- + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = 0; + SET @RETURN_STATUS_TEXT = concat('END PROCEDURE [',@MY_PROCEDURE_NAME,'] @ ',CONVERT(NVARCHAR(50),GETDATE(),120)); + SET @RETURN_ERROR_TEXT = concat('',''); + + PRINT ''; + PRINT @RETURN_STATUS_TEXT; + PRINT '===================================================================================================='; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'INFO', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + RETURN @RETURN_STATUS; + +END TRY BEGIN CATCH + + --====================================================-- exception / error --====================================================-- + IF (@@TRANCOUNT > 0) BEGIN + ROLLBACK TRANSACTION; + END; + + PRINT 'ERROR: ' + @RETURN_ERROR_TEXT; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO','WARN','ERROR')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'ERROR', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + --======================================================-- Output result --======================================================-- + SET @RETURN_STATUS = CASE WHEN @RETURN_STATUS > 50000 THEN @RETURN_STATUS ELSE 50000 END; + SET @RETURN_STATUS_TEXT = concat('END PROCEDURE [',@MY_PROCEDURE_NAME,'] @ ',CONVERT(NVARCHAR(50),GETDATE(),120)); + SET @RETURN_ERROR_TEXT = concat('ERROR MESSAGE: ',CONVERT(NVARCHAR(500),ERROR_MESSAGE())); + + PRINT 'ERROR IN PROCEDURE: [' + @MY_PROCEDURE_NAME + ']' + char(13) + @RETURN_ERROR_TEXT; + PRINT @RETURN_STATUS_TEXT; + PRINT '===================================================================================================='; + ----------------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- Log result to table --===================================================-- + IF (@LOG_LEVEL in ('INFO','WARN','ERROR')) BEGIN + EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'ERROR', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID, + @pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3, + @pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS, + @pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME; + END; + ----------------------------------------------------------------------------------------------------------------------------------- + + RETURN @RETURN_STATUS; + +END CATCH; +GO \ No newline at end of file diff --git a/current/[DD_ECM]-Database/DEX_SQL/[START-DEX].sql b/current/[DD_ECM]-Database/DEX_SQL/[START-DEX].sql new file mode 100644 index 0000000..50c597e --- /dev/null +++ b/current/[DD_ECM]-Database/DEX_SQL/[START-DEX].sql @@ -0,0 +1,129 @@ +USE [DD_ECM] +GO + +DECLARE @return_value int +EXEC @return_value = [dbo].[PRDEX_START_PROFILE_EXECUTION] + @pPROFILE_ID = 2, + @pTEST_MODE = 0, + @pASYNC_MODE = 0, + @pBATCH_ID = N'4712', + @pBATCH_CREATOR = N'meSamB', + @pLANGUAGE = N'de-de', + @pLOG_LEVEL = N'info', + @pSTART_QUERY_VAR1 = 'erledigt' + +SELECT 'Return Value' = @return_value +GO + +SELECT * FROM [DD_ECM].[dbo].[TBDEX_RUN_LOG] + +-- ========================================= +-- Validation: OUT <-> OUT_REFERENCES mapping +-- ========================================= + +-- 1) Letzte 50 Outputs inkl. Anzahl referenzzeilen +SELECT TOP (50) + [O].[GUID] AS [OUT_ID], + [O].[PROFILE_ID], + [O].[BATCH_ID], + [O].[ADDED_WHEN], + COUNT([R].[GUID]) AS [REFERENCE_ROWS] +FROM [DD_ECM].[dbo].[TBDEX_OUT] AS [O] +LEFT JOIN [DD_ECM].[dbo].[TBDEX_OUT_REFERENCES] AS [R] + ON [R].[OUT_ID] = [O].[GUID] +GROUP BY [O].[GUID],[O].[PROFILE_ID],[O].[BATCH_ID],[O].[ADDED_WHEN] +ORDER BY [O].[GUID] DESC; + +-- 2) Outputs ohne Referenzzeile (sollte 0 Zeilen liefern) +SELECT + [O].[GUID] AS [OUT_ID], + [O].[PROFILE_ID], + [O].[BATCH_ID], + [O].[ADDED_WHEN] +FROM [DD_ECM].[dbo].[TBDEX_OUT] AS [O] +LEFT JOIN [DD_ECM].[dbo].[TBDEX_OUT_REFERENCES] AS [R] + ON [R].[OUT_ID] = [O].[GUID] +WHERE [R].[GUID] IS NULL +ORDER BY [O].[GUID] DESC; + +-- 3) Referenzzeilen ohne Parent (sollte 0 Zeilen liefern) +SELECT + [R].[GUID] AS [REFERENCE_ID], + [R].[OUT_ID], + [R].[EXPORT_NUMBER], + [R].[ADDED_WHEN] +FROM [DD_ECM].[dbo].[TBDEX_OUT_REFERENCES] AS [R] +LEFT JOIN [DD_ECM].[dbo].[TBDEX_OUT] AS [O] + ON [O].[GUID] = [R].[OUT_ID] +WHERE [O].[GUID] IS NULL +ORDER BY [R].[GUID] DESC; +-- delete FROM [DD_ECM].[dbo].[TBDEX_RUN_LOG] + + +/**** + + SELECT DISTINCT %PROFILE_ID% as 'PROFILE_ID', + %BATCH_ID% as 'BATCH_ID', + [BA].[dwDocID] as 'REFERENCE1', + RIGHT(LEFT(ISNULL([BA].[dwDate09],RIGHT(year(getdate()),2)),4),2) as 'REFERENCE2', + NULL as 'REFERENCE3', + NULL as 'REFERENCE4', + NULL as 'REFERENCE5', + [dbo].[FNDD_GET_WINDREAM_FILE_PATH]([BA].[dwDocID],1) as 'EXTERNAL_REFERENCE1', + NULL as 'EXTERNAL_REFERENCE2', + NULL as 'EXTERNAL_REFERENCE3', + NULL as 'EXTERNAL_REFERENCE4', + NULL as 'EXTERNAL_REFERENCE5', + %TEST_MODE% as 'TEST_MODE', + %ASYNC_MODE% as 'ASYNC_MODE', + NULL as 'COMMENT', + '%BATCH_CREATOR%' as 'ADDED_WHO', + GETDATE() as 'ADDED_WHEN' +FROM %CONST_WD_DB%.[BaseAttributes] as [BA] (NOLOCK) +INNER JOIN %CONST_WD_DB%.[Vector] as [V] (NOLOCK) ON [BA].[dwDocID] = [V].[dwDocID] +WHERE [BA].[dwDocID] is not null + and [BA].[dwCatalogID] = 1 + and [BA].[szText37] in ('Eingangsrechnung-WF','Eingangsgutschrift-WF') -- Dokumentart + and [BA].[szText32] = 'Bestätigt' -- Status-Detail + and [BA].[szText33] = '%START_QUERY_VAR1%' -- Status + and ([BA].[dwDate04] is null or [BA].[dwDate04] = 19700101) -- Export-Datum + and LEFT([BA].[dwDate09],4) in (year(GETDATE()),year(GETDATE())-1,year(GETDATE())+1) -- Beleg-Datum + and ([BA].[dwInteger20] is NULL or [BA].[dwInteger20] = 0) -- Buchungsnummer + and (SELECT COUNT(*) FROM %CONST_WD_DB%.[Vector] as [V] (NOLOCK) WHERE [BA].[dwDocID] = [V].[dwDocID] and [V].[dwAttrID] = %CONST_WD_VECTOR_ID3% and [V].[blValue] = 1) > 0 --WF: Zahlungsfreigabe der Geschäftsführung + and (SELECT COUNT(*) FROM %CONST_WD_DB%.[Vector] as [V] (NOLOCK) WHERE [BA].[dwDocID] = [V].[dwDocID] and [V].[dwAttrID] = %CONST_WD_VECTOR_ID4% and [V].[blValue] = 1) = 0 --WF: Manuelle Schleupen Übergabe +ORDER BY [BA].[dwDocID] ASC; + + + SELECT %PROFILE_ID% as [PROFILE_ID], + %BATCH_ID% as [BATCH_ID], + 'EXPORT_BOOKING_NUMBER' as [Belegnummer (X)], + FORMAT(CONVERT(DATE,CONVERT(VARCHAR(8),LEFT([dwDate09],8)),104),'dd.MM.yyyy') as [Belegdatum (X)], + FORMAT(CONVERT(DATE,CONVERT(VARCHAR(8),LEFT([dwDate07],8)),104),'dd.MM.yyyy') as [Valutadatum], + 'K' as [Kontoart (X)], + REPLACE(REPLACE([szText38],';',''),' ','') as [Kontonummer (X)], + NULL as [Gegenkontoart (X)], + NULL as [Gegenkonto], + NULL as [Zusatzkontoart], + NULL as [Zusatzkonto], + TRY_CONVERT(float,[lfFloat12]) as [Betrag], + 'IncomeExpensesFlag' as [S/H-Kennzeichen], + '' as [Steuerschlüssel], + REPLACE(REPLACE([szText02],';',''),CHAR(13) + CHAR(10),'') as [Buchungstext], + NULL as [Zahlungsträgerhinweis], + NULL as [Geschäftsbereich], + FORMAT(CONVERT(DATE,CONVERT(VARCHAR(8),LEFT([decCreationTime],8)),104),'dd.MM.yyyy') as [externes Rechnungsdatum], + REPLACE([szText19],';','') as [externe Rechnungsnummer], + NULL as [Rechnungseinheit], + FORMAT(CONVERT(DATE,CONVERT(VARCHAR(8),LEFT([dwDate06],8)),104),'dd.MM.yyyy') as [Fälligkeitsdatum], + NULL as [Skontotage 1], + NULL as [Skonto Prozent 1], + NULL as [Skontotage 2], + NULL as [Skonto Prozent 2], + [dwInteger22] as [Nettotage] + FROM [windreamDB].[dbo].[BaseAttributes] (NOLOCK) + WHERE [dwDocID] = '%REFERENCE1%' + and [szText33] = 'in Arbeit'; + + + +****/ \ No newline at end of file diff --git a/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_CFG_OUT_DB].sql b/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_CFG_OUT_DB].sql new file mode 100644 index 0000000..22ce97a --- /dev/null +++ b/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_CFG_OUT_DB].sql @@ -0,0 +1,46 @@ +USE [DD_ECM] +GO + +/****** Object: Table [dbo].[TBDEX_CFG_OUT_DB] Script Date: 07.12.2025 23:10:46 ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[TBDEX_CFG_OUT_DB]( + [GUID] [bigint] IDENTITY(1,1) NOT NULL, + [PROFILE_ID] [bigint] NOT NULL, + [ACTIVE] [bit] NOT NULL, + [CONTENT_TYPE] [nvarchar](500) NULL, + [ADDED_WHO] [nvarchar](50) NOT NULL, + [ADDED_WHEN] [datetime] NOT NULL, + [CHANGED_WHO] [nvarchar](50) NULL, + [CHANGED_WHEN] [datetime] NULL, + CONSTRAINT [PK_TBDEX_CFG_OUT_DB] PRIMARY KEY CLUSTERED +( + [GUID] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = ON, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_DB] ADD CONSTRAINT [DF_TBDEX_CFG_OUT_DB_ACTIVE] DEFAULT ((0)) FOR [ACTIVE] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_DB] ADD CONSTRAINT [DF_TBDEX_CFG_OUT_DB_ADDED_WHO] DEFAULT ('DEFAULT') FOR [ADDED_WHO] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_DB] ADD CONSTRAINT [DF_TBDEX_CFG_OUT_DB_ADDED_WHEN] DEFAULT (getdate()) FOR [ADDED_WHEN] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_DB] WITH CHECK ADD CONSTRAINT [FK_TBDEX_CFG_OUT_DB_TBDEX_CFG_PROFILE] FOREIGN KEY([PROFILE_ID]) +REFERENCES [dbo].[TBDEX_CFG_PROFILE] ([GUID]) +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_DB] CHECK CONSTRAINT [FK_TBDEX_CFG_OUT_DB_TBDEX_CFG_PROFILE] +GO + +EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Link PROFILE_ID' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBDEX_CFG_OUT_DB', @level2type=N'CONSTRAINT',@level2name=N'FK_TBDEX_CFG_OUT_DB_TBDEX_CFG_PROFILE' +GO + + diff --git a/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_CFG_OUT_FILE].sql b/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_CFG_OUT_FILE].sql new file mode 100644 index 0000000..44e29cc --- /dev/null +++ b/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_CFG_OUT_FILE].sql @@ -0,0 +1,90 @@ +USE [DD_ECM] +GO + +/****** Object: Table [dbo].[TBDEX_CFG_OUT_FILE] Script Date: 07.12.2025 23:12:58 ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[TBDEX_CFG_OUT_FILE]( + [GUID] [bigint] IDENTITY(1,1) NOT NULL, + [PROFILE_ID] [bigint] NOT NULL, + [ACTIVE] [bit] NOT NULL, + [EXPORT_HEADER] [bit] NOT NULL, + [FILE_TYPE] [nvarchar](50) NOT NULL, + [FILE_NAME_SEPARATOR] [nvarchar](50) NOT NULL, + [FILE_DATA_SEPARATOR] [nvarchar](50) NOT NULL, + [FILE_BASE_NAME] [nvarchar](50) NOT NULL, + [FILE_COUNTER_SCHEMA] [nvarchar](50) NOT NULL, + [FILE_COUNTER] [bigint] NOT NULL, + [FILE_EXTENSION] [nvarchar](5) NOT NULL, + [FILE_PATH_TEMP] [nvarchar](255) NOT NULL, + [FILE_PATH_EXPORT] [nvarchar](255) NOT NULL, + [FILE_PATH_ARCHIV] [nvarchar](255) NOT NULL, + [FILE_PATH_ERROR] [nvarchar](255) NOT NULL, + [ADDED_WHO] [nvarchar](50) NOT NULL, + [ADDED_WHEN] [datetime] NOT NULL, + [CHANGED_WHO] [nvarchar](50) NULL, + [CHANGED_WHEN] [datetime] NULL, + CONSTRAINT [PK_TBDEX_CFG_OUT_FILE] PRIMARY KEY CLUSTERED +( + [GUID] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = ON, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_FILE] ADD CONSTRAINT [DF_TBDEX_CFG_OUT_FILE_ACTIVE] DEFAULT ((0)) FOR [ACTIVE] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_FILE] ADD CONSTRAINT [DF_TBDEX_CFG_OUT_FILE_EXPORT_HEADER] DEFAULT ((0)) FOR [EXPORT_HEADER] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_FILE] ADD CONSTRAINT [DF_TBDEX_CFG_OUT_FILE_NAME_SEPARATOR] DEFAULT ('_') FOR [FILE_NAME_SEPARATOR] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_FILE] ADD CONSTRAINT [DF_TBDEX_CFG_OUT_FILE_DATA_SEPARATOR] DEFAULT (';') FOR [FILE_DATA_SEPARATOR] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_FILE] ADD CONSTRAINT [DF_TBDEX_CFG_OUT_FILE_BASE_NAME] DEFAULT ('ExportFile_') FOR [FILE_BASE_NAME] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_FILE] ADD CONSTRAINT [DF_TBDEX_CFG_OUT_FILE_COUNTER_SCHEMA] DEFAULT ('YY00000') FOR [FILE_COUNTER_SCHEMA] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_FILE] ADD CONSTRAINT [DF_TBDEX_CFG_OUT_FILE_COUNTER] DEFAULT ((0)) FOR [FILE_COUNTER] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_FILE] ADD CONSTRAINT [DF_TBDEX_CFG_OUT_FILE_EXTENSION] DEFAULT ('CSV') FOR [FILE_EXTENSION] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_FILE] ADD CONSTRAINT [DF_TBDEX_CFG_OUT_FILE_PATH_TEMP] DEFAULT ('E:\FileProcessing\Temp\File\') FOR [FILE_PATH_TEMP] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_FILE] ADD CONSTRAINT [DF_TBDEX_CFG_OUT_FILE_PATH_EXPORT] DEFAULT ('E:\FileProcessing\Output\File\') FOR [FILE_PATH_EXPORT] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_FILE] ADD CONSTRAINT [DF_TBDEX_CFG_OUT_FILE_PATH_ARCHIV] DEFAULT ('E:\FileProcessing\Archive\File\') FOR [FILE_PATH_ARCHIV] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_FILE] ADD CONSTRAINT [DF_TBDEX_CFG_OUT_FILE_PATH_ERROR] DEFAULT ('E:\FileProcessing\Error\File\') FOR [FILE_PATH_ERROR] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_FILE] ADD CONSTRAINT [DF_TBDEX_CFG_OUT_FILE_ADDED_WHO] DEFAULT ('DEFAULT') FOR [ADDED_WHO] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_FILE] ADD CONSTRAINT [DF_TBDEX_CFG_OUT_FILE_ADDED_WHEN] DEFAULT (getdate()) FOR [ADDED_WHEN] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_FILE] WITH CHECK ADD CONSTRAINT [FK_TBDEX_CFG_OUT_FILE_TBDEX_CFG_PROFILE] FOREIGN KEY([PROFILE_ID]) +REFERENCES [dbo].[TBDEX_CFG_PROFILE] ([GUID]) +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_FILE] CHECK CONSTRAINT [FK_TBDEX_CFG_OUT_FILE_TBDEX_CFG_PROFILE] +GO + +EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Link PROFILE_ID' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBDEX_CFG_OUT_FILE', @level2type=N'CONSTRAINT',@level2name=N'FK_TBDEX_CFG_OUT_FILE_TBDEX_CFG_PROFILE' +GO + + diff --git a/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_CFG_OUT_STRUCTURE].sql b/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_CFG_OUT_STRUCTURE].sql new file mode 100644 index 0000000..ddbacfd --- /dev/null +++ b/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_CFG_OUT_STRUCTURE].sql @@ -0,0 +1,67 @@ +USE [DD_ECM] +GO + +/****** Object: Table [dbo].[TBDEX_CFG_OUT_STRUCTURE] Script Date: 07.12.2025 23:14:25 ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[TBDEX_CFG_OUT_STRUCTURE]( + [GUID] [bigint] IDENTITY(1,1) NOT NULL, + [PROFILE_ID] [bigint] NOT NULL, + [ACTIVE] [bit] NOT NULL, + [DESCRIPTION] [nvarchar](500) NULL, + [EXPORT_TYPE] [nvarchar](50) NOT NULL, + [SEQUENCE] [tinyint] NOT NULL, + [PATH_OR_COLUMN] [nvarchar](500) NOT NULL, + [DATA_TYPE] [nvarchar](50) NOT NULL, + [LANGUAGE] [nvarchar](10) NOT NULL, + [COMMENT] [nvarchar](250) NULL, + [ADDED_WHO] [nvarchar](50) NOT NULL, + [ADDED_WHEN] [datetime] NOT NULL, + [CHANGED_WHO] [nvarchar](50) NULL, + [CHANGED_WHEN] [datetime] NULL, + CONSTRAINT [PK_TBDEX_CFG_OUT_STRUCTURE] PRIMARY KEY CLUSTERED +( + [GUID] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = ON, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_STRUCTURE] ADD CONSTRAINT [DF_TBDEX_CFG_OUT_STRUCTURE_ACTIVE] DEFAULT ((0)) FOR [ACTIVE] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_STRUCTURE] ADD CONSTRAINT [DF_TBDEX_CFG_OUT_STRUCTURE_LEVEL_OR_COLUMN_NUMBER] DEFAULT ((0)) FOR [SEQUENCE] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_STRUCTURE] ADD CONSTRAINT [DF_TBDEX_CFG_OUT_STRUCTURE_DATA_TYPE] DEFAULT ('NVARCHAR(100)') FOR [DATA_TYPE] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_STRUCTURE] ADD CONSTRAINT [DF_TBDEX_CFG_OUT_STRUCTURE_LANGUAGE] DEFAULT ('de_DE') FOR [LANGUAGE] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_STRUCTURE] ADD CONSTRAINT [DF_TBDEX_CFG_OUT_STRUCTURE_ADDED_WHO] DEFAULT ('DEFAULT') FOR [ADDED_WHO] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_STRUCTURE] ADD CONSTRAINT [DF_TBDEX_CFG_OUT_STRUCTURE_ADDED_WHEN] DEFAULT (getdate()) FOR [ADDED_WHEN] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_STRUCTURE] WITH CHECK ADD CONSTRAINT [FK_TBDEX_CFG_OUT_STRUCTURE_TBDEX_CFG_PROFILE] FOREIGN KEY([PROFILE_ID]) +REFERENCES [dbo].[TBDEX_CFG_PROFILE] ([GUID]) +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_STRUCTURE] CHECK CONSTRAINT [FK_TBDEX_CFG_OUT_STRUCTURE_TBDEX_CFG_PROFILE] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_STRUCTURE] WITH CHECK ADD CONSTRAINT [CK_TBDEX_CFG_OUT_STRUCTURE_EXPORT_TYPE] CHECK ((upper([DATA_TYPE])='DATETIME2' OR upper([DATA_TYPE])='DATETIME' OR upper([DATA_TYPE])='DATE' OR upper([DATA_TYPE])='FLOAT' OR upper([DATA_TYPE])='BIGINT' OR upper([DATA_TYPE])='INT' OR upper([DATA_TYPE])='TINYINT' OR upper([DATA_TYPE]) like '%VARCHAR%')) +GO + +ALTER TABLE [dbo].[TBDEX_CFG_OUT_STRUCTURE] CHECK CONSTRAINT [CK_TBDEX_CFG_OUT_STRUCTURE_EXPORT_TYPE] +GO + +EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Link PROFILE_ID' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBDEX_CFG_OUT_STRUCTURE', @level2type=N'CONSTRAINT',@level2name=N'FK_TBDEX_CFG_OUT_STRUCTURE_TBDEX_CFG_PROFILE' +GO + + diff --git a/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_CFG_PROFILE].sql b/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_CFG_PROFILE].sql new file mode 100644 index 0000000..272f689 --- /dev/null +++ b/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_CFG_PROFILE].sql @@ -0,0 +1,66 @@ +USE [DD_ECM] +GO + +/****** Object: Table [dbo].[TBDEX_CFG_PROFILE] Script Date: 07.12.2025 23:16:42 ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[TBDEX_CFG_PROFILE]( + [GUID] [bigint] IDENTITY(1,1) NOT NULL, + [ACTIVE] [bit] NOT NULL, + [PROFILE_NAME] [nvarchar](50) NOT NULL, + [DESCRIPTION] [nvarchar](250) NULL, + [MANDANTOR] [nvarchar](50) NOT NULL, + [EXPORT_TYPE] [nvarchar](50) NOT NULL, + [EXPORT_NUMBER_SCHEMA] [nvarchar](25) NOT NULL, + [DEFAULT_DATA_SEPARATOR] [nvarchar](10) NULL, + [LOG_LEVEL] [nvarchar](5) NOT NULL, + [LANGUAGE] [nvarchar](10) NOT NULL, + [ADDED_WHO] [nvarchar](50) NOT NULL, + [ADDED_WHEN] [datetime] NOT NULL, + [CHANGED_WHO] [nvarchar](50) NULL, + [CHANGED_WHEN] [datetime] NULL, + CONSTRAINT [PK_TBDEX_CFG_PROFILE] PRIMARY KEY CLUSTERED +( + [GUID] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = ON, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_PROFILE] ADD CONSTRAINT [DF_TBDEX_CFG_PROFILE_ACTIVE] DEFAULT ((0)) FOR [ACTIVE] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_PROFILE] ADD CONSTRAINT [DF_TBDEX_CFG_PROFILE_MANDANTOR] DEFAULT ('DEFAULT') FOR [MANDANTOR] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_PROFILE] ADD CONSTRAINT [DF_TBDEX_CFG_PROFILE_EXPORT_TYPE] DEFAULT (N'DB') FOR [EXPORT_TYPE] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_PROFILE] ADD CONSTRAINT [DF_TBDEX_CFG_PROFILE_LOG_LEVEL] DEFAULT ('ERROR') FOR [LOG_LEVEL] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_PROFILE] ADD CONSTRAINT [DF_TBDEX_CFG_PROFILE_LANGUAGE] DEFAULT ('de_DE') FOR [LANGUAGE] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_PROFILE] ADD CONSTRAINT [DF_TBDEX_CFG_PROFILE_ADDED_WHO] DEFAULT ('DEFAULT') FOR [ADDED_WHO] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_PROFILE] ADD CONSTRAINT [DF_TBDEX_CFG_PROFILE_ADDED_WHEN] DEFAULT (getdate()) FOR [ADDED_WHEN] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_PROFILE] WITH CHECK ADD CONSTRAINT [CK_TBDEX_CFG_PROFILE_EXPORT_TYPE] CHECK ((upper([EXPORT_TYPE])='DB' OR upper([EXPORT_TYPE])='CSV_FILE')) +GO + +ALTER TABLE [dbo].[TBDEX_CFG_PROFILE] CHECK CONSTRAINT [CK_TBDEX_CFG_PROFILE_EXPORT_TYPE] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_PROFILE] WITH CHECK ADD CONSTRAINT [CK_TBDEX_CFG_PROFILE_LOG_LEVEL] CHECK ((upper([LOG_LEVEL])='ERROR' OR upper([LOG_LEVEL])='WARN' OR upper([LOG_LEVEL])='INFO')) +GO + +ALTER TABLE [dbo].[TBDEX_CFG_PROFILE] CHECK CONSTRAINT [CK_TBDEX_CFG_PROFILE_LOG_LEVEL] +GO + + diff --git a/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_CFG_RESOURCES].sql b/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_CFG_RESOURCES].sql new file mode 100644 index 0000000..effbdd8 --- /dev/null +++ b/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_CFG_RESOURCES].sql @@ -0,0 +1,73 @@ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[TBDEX_CFG_RESOURCES]( + [GUID] [bigint] IDENTITY(1,1) NOT NULL, + [PROFILE_ID] [bigint] NOT NULL, + [ACTIVE] [bit] NOT NULL, + [SEQUENCE] [tinyint] NOT NULL, + [PLACEHOLDER_NAME] [nvarchar](50) NOT NULL, + [PLACEHOLDER_TYPE] [nvarchar](10) NOT NULL, + [PLACEHOLDER] [nvarchar](max) NOT NULL, + [ERROR_ACTION] [smallint] NULL, + [COMMENT] [nvarchar](250) NULL, + [ADDED_WHO] [nvarchar](50) NOT NULL, + [ADDED_WHEN] [datetime] NOT NULL, + [CHANGED_WHO] [nvarchar](50) NULL, + [CHANGED_WHEN] [datetime] NULL, + CONSTRAINT [PK_TBDEX_CFG_RESOURCES] PRIMARY KEY CLUSTERED +( + [GUID] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = ON, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_RESOURCES] ADD CONSTRAINT [DF_TBDEX_CFG_RESOURCES_ACTIVE] DEFAULT ((1)) FOR [ACTIVE] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_RESOURCES] ADD CONSTRAINT [DF_TBDEX_CFG_RESOURCES_SEQUENCE] DEFAULT ((0)) FOR [SEQUENCE] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_RESOURCES] ADD CONSTRAINT [DF_TBDEX_CFG_RESOURCES_PLACEHOLDER_NAME] DEFAULT ('DEFAULT') FOR [PLACEHOLDER_NAME] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_RESOURCES] ADD CONSTRAINT [DF_TBDEX_CFG_RESOURCES_PLACEHOLDER_TYPE] DEFAULT ('VALUE') FOR [PLACEHOLDER_TYPE] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_RESOURCES] ADD CONSTRAINT [DF_TBDEX_CFG_RESOURCES_ERROR_ACTION] DEFAULT ((0)) FOR [ERROR_ACTION] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_RESOURCES] ADD CONSTRAINT [DF_TBDEX_CFG_RESOURCES_ADDED_WHO] DEFAULT ('DEFAULT') FOR [ADDED_WHO] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_RESOURCES] ADD CONSTRAINT [DF_TBDEX_CFG_RESOURCES_ADDED_WHEN] DEFAULT (getdate()) FOR [ADDED_WHEN] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_RESOURCES] WITH NOCHECK ADD CONSTRAINT [FK_TBDEX_CFG_RESOURCES_TBDEX_CFG_PROFILE] FOREIGN KEY([PROFILE_ID]) +REFERENCES [dbo].[TBDEX_CFG_PROFILE] ([GUID]) +GO + +ALTER TABLE [dbo].[TBDEX_CFG_RESOURCES] NOCHECK CONSTRAINT [FK_TBDEX_CFG_RESOURCES_TBDEX_CFG_PROFILE] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_RESOURCES] WITH CHECK ADD CONSTRAINT [CK_TBDEX_CFG_RESOURCES_PLACEHOLDER_TYPE] CHECK ((upper([PLACEHOLDER_TYPE])='QUERY' OR upper([PLACEHOLDER_TYPE])='CONST')) +GO + +ALTER TABLE [dbo].[TBDEX_CFG_RESOURCES] CHECK CONSTRAINT [CK_TBDEX_CFG_RESOURCES_PLACEHOLDER_TYPE] +GO + +ALTER TABLE [dbo].[TBDEX_CFG_RESOURCES] WITH CHECK ADD CONSTRAINT [CK_TBDEX_CFG_RESOURCES_ERROR_ACTION] CHECK (([ERROR_ACTION]=(0) OR [ERROR_ACTION]=(1))) +GO + +ALTER TABLE [dbo].[TBDEX_CFG_RESOURCES] CHECK CONSTRAINT [CK_TBDEX_CFG_RESOURCES_ERROR_ACTION] +GO + +EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Fehlerbehandlung (0 = STOP; 1 = CONTINUE)' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBDEX_CFG_RESOURCES', @level2type=N'COLUMN',@level2name=N'ERROR_ACTION' +GO + +EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Link PROFILE_ID' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBDEX_CFG_RESOURCES', @level2type=N'CONSTRAINT',@level2name=N'FK_TBDEX_CFG_RESOURCES_TBDEX_CFG_PROFILE' +GO + + diff --git a/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_IN].sql b/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_IN].sql new file mode 100644 index 0000000..3816543 --- /dev/null +++ b/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_IN].sql @@ -0,0 +1,48 @@ +USE [DD_ECM] +GO + +/****** Object: Table [dbo].[TBDEX_IN] Script Date: 07.12.2025 23:19:58 ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[TBDEX_IN] +( + [GUID] [bigint] IDENTITY(1,1) NOT NULL, + [PROFILE_ID] [bigint] NOT NULL, + [BATCH_ID] [nvarchar](25) COLLATE Latin1_General_CI_AS NOT NULL, + [REFERENCE1] [nvarchar](150) COLLATE Latin1_General_CI_AS NOT NULL, + [REFERENCE2] [nvarchar](150) COLLATE Latin1_General_CI_AS NULL, + [REFERENCE3] [nvarchar](150) COLLATE Latin1_General_CI_AS NULL, + [REFERENCE4] [nvarchar](150) COLLATE Latin1_General_CI_AS NULL, + [REFERENCE5] [nvarchar](150) COLLATE Latin1_General_CI_AS NULL, + [EXTERNAL_REFERENCE1] [nvarchar](2000) COLLATE Latin1_General_CI_AS NULL, + [EXTERNAL_REFERENCE2] [nvarchar](2000) COLLATE Latin1_General_CI_AS NULL, + [EXTERNAL_REFERENCE3] [nvarchar](2000) COLLATE Latin1_General_CI_AS NULL, + [EXTERNAL_REFERENCE4] [nvarchar](2000) COLLATE Latin1_General_CI_AS NULL, + [EXTERNAL_REFERENCE5] [nvarchar](2000) COLLATE Latin1_General_CI_AS NULL, + [TEST_MODE] [bit] NOT NULL, + [ASYNC_MODE] [bit] NOT NULL, + [COMMENT] [nvarchar](150) COLLATE Latin1_General_CI_AS NULL, + [ADDED_WHO] [nvarchar](50) COLLATE Latin1_General_CI_AS NOT NULL, + [ADDED_WHEN] [datetime] NOT NULL, + + CONSTRAINT [PK_TBDEX_IN] PRIMARY KEY NONCLUSTERED +( + [GUID] ASC +) +)WITH ( MEMORY_OPTIMIZED = ON , DURABILITY = SCHEMA_ONLY ) +GO + +ALTER TABLE [dbo].[TBDEX_IN] ADD CONSTRAINT [DF_TBDEX_IN_ADDED_WHO] DEFAULT ('DEFAULT') FOR [ADDED_WHO] +GO + +ALTER TABLE [dbo].[TBDEX_IN] ADD CONSTRAINT [DF_TBDEX_IN_ADDED_WHEN] DEFAULT (getdate()) FOR [ADDED_WHEN] +GO + +ALTER TABLE [dbo].[TBDEX_IN] ADD INDEX [IX_TBDEX_IN_PROFILE_BATCH] NONCLUSTERED ([PROFILE_ID],[BATCH_ID]); +GO + + diff --git a/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_OUT].sql b/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_OUT].sql new file mode 100644 index 0000000..fba93bb --- /dev/null +++ b/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_OUT].sql @@ -0,0 +1,50 @@ +USE [DD_ECM] +GO + +/****** Object: Table [dbo].[TBDEX_OUT] Script Date: 07.12.2025 13:25:39 ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[TBDEX_OUT]( + [GUID] [bigint] IDENTITY(1,1) NOT NULL, + [PROFILE_ID] [bigint] NOT NULL, + [BATCH_ID] [nvarchar](25) NOT NULL, + [CONTENT] [nvarchar](max) NOT NULL, + [EXPORT_FILE_NAME] [nvarchar](100) NULL, + [EXPORT_FILE_HASH_TYPE] [nvarchar](25) NULL, + [EXPORT_FILE_HASH_VALUE] [nvarchar](250) NULL, + [EXPORT_WHEN] [datetime] NULL, + [EXPORT_STATUS] [tinyint] NULL, + [EXPORT_STATUS_MESSAGE] [nvarchar](max) NULL, + [COMMENT] [nvarchar](max) NULL, + [ADDED_WHO] [nvarchar](50) NOT NULL, + [ADDED_WHEN] [datetime] NOT NULL, + [CHANGED_WHO] [nvarchar](50) NULL, + [CHANGED_WHEN] [datetime] NULL, + CONSTRAINT [PK_TBDEX_OUT] PRIMARY KEY CLUSTERED +( + [GUID] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = ON, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +ALTER TABLE [dbo].[TBDEX_OUT] ADD CONSTRAINT [DF_TBDEX_OUT_ADDED_WHO] DEFAULT ('DEFAULT') FOR [ADDED_WHO] +GO + +ALTER TABLE [dbo].[TBDEX_OUT] ADD CONSTRAINT [DF_TBDEX_OUT_ADDED_WHEN] DEFAULT (getdate()) FOR [ADDED_WHEN] +GO + +ALTER TABLE [dbo].[TBDEX_OUT] WITH CHECK ADD CONSTRAINT [FK_TBDEX_OUT_TBDEX_CONFIG_PROFILE] FOREIGN KEY([PROFILE_ID]) +REFERENCES [dbo].[TBDEX_CFG_PROFILE] ([GUID]) +GO + +ALTER TABLE [dbo].[TBDEX_OUT] CHECK CONSTRAINT [FK_TBDEX_OUT_TBDEX_CONFIG_PROFILE] +GO + +EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Link PROFILE_ID' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBDEX_OUT', @level2type=N'CONSTRAINT',@level2name=N'FK_TBDEX_OUT_TBDEX_CONFIG_PROFILE' +GO + + diff --git a/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_OUT_REFERENCES].sql b/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_OUT_REFERENCES].sql new file mode 100644 index 0000000..385d802 --- /dev/null +++ b/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_OUT_REFERENCES].sql @@ -0,0 +1,52 @@ +USE [DD_ECM] +GO + +/****** Object: Table [dbo].[TBDEX_OUT_REFERENCES] Script Date: 07.12.2025 23:23:07 ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[TBDEX_OUT_REFERENCES]( + [GUID] [bigint] IDENTITY(1,1) NOT NULL, + [OUT_ID] [bigint] NOT NULL, + [REFERENCE1] [nvarchar](150) NOT NULL, + [REFERENCE2] [nvarchar](150) NULL, + [REFERENCE3] [nvarchar](150) NULL, + [REFERENCE4] [nvarchar](150) NULL, + [REFERENCE5] [nvarchar](150) NULL, + [EXTERNAL_REFERENCE1] [nvarchar](255) NULL, + [EXTERNAL_REFERENCE2] [nvarchar](255) NULL, + [EXTERNAL_REFERENCE3] [nvarchar](255) NULL, + [EXTERNAL_REFERENCE4] [nvarchar](255) NULL, + [EXTERNAL_REFERENCE5] [nvarchar](255) NULL, + [EXPORT_NUMBER] [nvarchar](50) NOT NULL, + [ADDED_WHO] [nvarchar](50) NOT NULL, + [ADDED_WHEN] [datetime] NOT NULL, + [CHANGED_WHO] [nvarchar](50) NULL, + [CHANGED_WHEN] [datetime] NULL, + CONSTRAINT [PK_TBDEX_OUT_REFERENCES] PRIMARY KEY CLUSTERED +( + [GUID] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = ON, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[TBDEX_OUT_REFERENCES] ADD CONSTRAINT [DF_TBDEX_OUT_REFERENCES_ADDED_WHO] DEFAULT ('DEFAULT') FOR [ADDED_WHO] +GO + +ALTER TABLE [dbo].[TBDEX_OUT_REFERENCES] ADD CONSTRAINT [DF_TBDEX_OUT_REFERENCES_ADDED_WHEN] DEFAULT (getdate()) FOR [ADDED_WHEN] +GO + +ALTER TABLE [dbo].[TBDEX_OUT_REFERENCES] WITH CHECK ADD CONSTRAINT [FK_TBDEX_OUT_REFERENCES_TBDEX_OUT] FOREIGN KEY([OUT_ID]) +REFERENCES [dbo].[TBDEX_OUT] ([GUID]) +GO + +ALTER TABLE [dbo].[TBDEX_OUT_REFERENCES] CHECK CONSTRAINT [FK_TBDEX_OUT_REFERENCES_TBDEX_OUT] +GO + +EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Link OUT_ID' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBDEX_OUT_REFERENCES', @level2type=N'CONSTRAINT',@level2name=N'FK_TBDEX_OUT_REFERENCES_TBDEX_OUT' +GO + + diff --git a/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_RUN_LOG].sql b/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_RUN_LOG].sql new file mode 100644 index 0000000..af67b89 --- /dev/null +++ b/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_RUN_LOG].sql @@ -0,0 +1,75 @@ +USE [DD_ECM] +GO + +/****** Object: Table [dbo].[TBDEX_RUN_LOG] Script Date: 07.12.2025 23:25:20 ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[TBDEX_RUN_LOG]( + [GUID] [bigint] IDENTITY(1,1) NOT NULL, + [PROFILE_ID] [bigint] NOT NULL, + [BATCH_ID] [nvarchar](25) NULL, + [LOG_LEVEL] [nvarchar](25) NOT NULL, + [REFERENCE1] [nvarchar](150) NULL, + [REFERENCE2] [nvarchar](150) NULL, + [REFERENCE3] [nvarchar](150) NULL, + [REFERENCE4] [nvarchar](150) NULL, + [REFERENCE5] [nvarchar](150) NULL, + [RETURN_CODE] [int] NOT NULL, + [MESSAGE1] [nvarchar](max) NOT NULL, + [MESSAGE2] [nvarchar](max) NULL, + [MESSAGE3] [nvarchar](max) NULL, + [MESSAGE4] [nvarchar](max) NULL, + [MESSAGE5] [nvarchar](max) NULL, + [COMMENT] [nvarchar](250) NULL, + [ADDED_WHO] [nvarchar](50) NOT NULL, + [ADDED_WHEN] [datetime] NOT NULL, + CONSTRAINT [PK_TBDEX_RUN_LOG_GUID] PRIMARY KEY CLUSTERED +( + [GUID] ASC +)WITH (DATA_COMPRESSION = PAGE, PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = ON, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +ALTER TABLE [dbo].[TBDEX_RUN_LOG] ADD CONSTRAINT [DF_TBDEX_RUN_LOG_REFERENCE1] DEFAULT ((0)) FOR [PROFILE_ID] +GO + +ALTER TABLE [dbo].[TBDEX_RUN_LOG] ADD CONSTRAINT [DF_TBDEX_RUN_LOG_LOG_LEVEL] DEFAULT ('UNKNOWN') FOR [LOG_LEVEL] +GO + +ALTER TABLE [dbo].[TBDEX_RUN_LOG] ADD CONSTRAINT [DF_TBDEX_RUN_LOG_RETURN_CODE] DEFAULT ((0)) FOR [RETURN_CODE] +GO + +ALTER TABLE [dbo].[TBDEX_RUN_LOG] ADD CONSTRAINT [DF_TBDEX_RUN_LOG_MESSAGE1] DEFAULT ('NO MESSAGE GIVEN') FOR [MESSAGE1] +GO + +ALTER TABLE [dbo].[TBDEX_RUN_LOG] ADD CONSTRAINT [DF_TBDEX_RUN_LOG_ADDED_WHO] DEFAULT ('DEFAULT') FOR [ADDED_WHO] +GO + +ALTER TABLE [dbo].[TBDEX_RUN_LOG] ADD CONSTRAINT [DF_TBDEX_RUN_LOG_ADDED_WHEN] DEFAULT (getdate()) FOR [ADDED_WHEN] +GO + +ALTER TABLE [dbo].[TBDEX_RUN_LOG] WITH CHECK ADD CONSTRAINT [FK_TBDEX_RUN_LOG_TBDEX_CFG_PROFILE] FOREIGN KEY([PROFILE_ID]) +REFERENCES [dbo].[TBDEX_CFG_PROFILE] ([GUID]) +GO + +ALTER TABLE [dbo].[TBDEX_RUN_LOG] CHECK CONSTRAINT [FK_TBDEX_RUN_LOG_TBDEX_CFG_PROFILE] +GO + +CREATE NONCLUSTERED INDEX [IX_TBDEX_RUN_LOG_PROFILE_BATCH] ON [dbo].[TBDEX_RUN_LOG] +( + [PROFILE_ID] ASC, + [BATCH_ID] ASC, + [ADDED_WHEN] DESC +) +WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = ON, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) +ON [PRIMARY] +GO + +EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Link PROFILE_ID' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBDEX_RUN_LOG', @level2type=N'CONSTRAINT',@level2name=N'FK_TBDEX_RUN_LOG_TBDEX_CFG_PROFILE' +GO + + diff --git a/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_RUN_NUMBER_RANGE].sql b/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_RUN_NUMBER_RANGE].sql new file mode 100644 index 0000000..1435d8b --- /dev/null +++ b/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_RUN_NUMBER_RANGE].sql @@ -0,0 +1,52 @@ +USE [DD_ECM] +GO + +/****** Object: Table [dbo].[TBDEX_RUN_NUMBER_RANGE] Script Date: 07.12.2025 23:26:21 ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[TBDEX_RUN_NUMBER_RANGE]( + [GUID] [bigint] IDENTITY(1,1) NOT NULL, + [PROFILE_ID] [bigint] NOT NULL, + [ACTIVE] [bit] NOT NULL, + [DESCRIPTION] [nvarchar](50) NULL, + [EXPORT_NUMBER_SCHEMA] [nvarchar](25) NOT NULL, + [EXPORT_NUMBER_COUNTER] [bigint] NOT NULL, + [EXPORT_NUMBER] [nvarchar](25) NOT NULL, + [VALID_FROM] [date] NULL, + [VALID_TO] [date] NULL, + [COMMENT] [nvarchar](250) NULL, + [ADDED_WHO] [nvarchar](50) NOT NULL, + [ADDED_WHEN] [datetime] NOT NULL, + [CHANGED_WHO] [nvarchar](50) NULL, + [CHANGED_WHEN] [datetime] NULL, + CONSTRAINT [PK_TBDEX_RUN_NUMBER_RANGE] PRIMARY KEY CLUSTERED +( + [GUID] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = ON, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[TBDEX_RUN_NUMBER_RANGE] ADD CONSTRAINT [DF_TBDEX_RUN_NUMBER_RANGE_ACTIVE] DEFAULT ((0)) FOR [ACTIVE] +GO + +ALTER TABLE [dbo].[TBDEX_RUN_NUMBER_RANGE] ADD CONSTRAINT [DF_TBDEX_RUN_NUMBER_RANGE_ADDED_WHO] DEFAULT ('DD_ECM DB-Internal') FOR [ADDED_WHO] +GO + +ALTER TABLE [dbo].[TBDEX_RUN_NUMBER_RANGE] ADD CONSTRAINT [DF_TBDEX_RUN_NUMBER_RANGE_ADDED_WHEN] DEFAULT (getdate()) FOR [ADDED_WHEN] +GO + +ALTER TABLE [dbo].[TBDEX_RUN_NUMBER_RANGE] WITH CHECK ADD CONSTRAINT [FK_TBDEX_RUN_NUMBER_RANGE_TBDEX_CFG_PROFILE] FOREIGN KEY([PROFILE_ID]) +REFERENCES [dbo].[TBDEX_CFG_PROFILE] ([GUID]) +GO + +ALTER TABLE [dbo].[TBDEX_RUN_NUMBER_RANGE] CHECK CONSTRAINT [FK_TBDEX_RUN_NUMBER_RANGE_TBDEX_CFG_PROFILE] +GO + +EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Link PROFILE_ID' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TBDEX_RUN_NUMBER_RANGE', @level2type=N'CONSTRAINT',@level2name=N'FK_TBDEX_RUN_NUMBER_RANGE_TBDEX_CFG_PROFILE' +GO + + diff --git a/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_RUN_PROFILE].sql b/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_RUN_PROFILE].sql new file mode 100644 index 0000000..58b8912 --- /dev/null +++ b/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_RUN_PROFILE].sql @@ -0,0 +1,32 @@ +USE [DD_ECM] +GO + +/****** Object: Table [dbo].[TBDEX_RUN_PROFILE] Script Date: 07.12.2025 23:26:49 ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[TBDEX_RUN_PROFILE]( + [GUID] [bigint] IDENTITY(1,1) NOT NULL, + [PROFILE_ID] [bigint] NOT NULL, + [FIRST_RUN] [datetime] NULL, + [LAST_RUN] [datetime] NULL, + [LAST_BATCH_ID] [nvarchar](25) NULL, + [LAST_RESULT] [nvarchar](250) NULL + CONSTRAINT [PK_TBDEX_RUN_PROFILE] PRIMARY KEY CLUSTERED +( + [GUID] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = ON, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[TBDEX_RUN_PROFILE] WITH CHECK ADD CONSTRAINT [FK_TBDEX_RUN_PROFILE_TBDEX_CFG_PROFILE] FOREIGN KEY([PROFILE_ID]) +REFERENCES [dbo].[TBDEX_CFG_PROFILE] ([GUID]) +GO + +ALTER TABLE [dbo].[TBDEX_RUN_PROFILE] CHECK CONSTRAINT [FK_TBDEX_RUN_PROFILE_TBDEX_CFG_PROFILE] +GO + + diff --git a/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_TMP_PROCESS].sql b/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_TMP_PROCESS].sql new file mode 100644 index 0000000..823e650 --- /dev/null +++ b/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_TMP_PROCESS].sql @@ -0,0 +1,46 @@ +USE [DD_ECM] +GO + +/****** Object: Table [dbo].[TBDEX_TMP_PROCESS] Script Date: 07.12.2025 23:29:04 ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[TBDEX_TMP_PROCESS] +( + [GUID] [bigint] IDENTITY(1,1) NOT NULL, + [PROFILE_ID] [bigint] NOT NULL, + [BATCH_ID] [nvarchar](25) COLLATE Latin1_General_CI_AS NOT NULL, + [TBDEX_TMP_TABLE_SCHEMA] [nvarchar](15) COLLATE Latin1_General_CI_AS NULL, + [TBDEX_TMP_TABLE_NAME] [nvarchar](128) COLLATE Latin1_General_CI_AS NULL, + [TBDEX_TMP_TABLE_SCHEMA_AND_NAME] [nvarchar](150) COLLATE Latin1_General_CI_AS NULL, + [TBDEX_TMP_TABLE_COLUMNS] [nvarchar](max) COLLATE Latin1_General_CI_AS NULL, + [TBDEX_TMP_TABLE_DROP_QUERY] [nvarchar](max) COLLATE Latin1_General_CI_AS NULL, + [TBDEX_TMP_TABLE_CREATE_QUERY] [nvarchar](max) COLLATE Latin1_General_CI_AS NULL, + [TBDEX_TMP_TABLE_INSERT_QUERY] [nvarchar](max) COLLATE Latin1_General_CI_AS NULL, + [TBDEX_TMP_TABLE_CONTENT] [nvarchar](max) COLLATE Latin1_General_CI_AS NULL, + [COMMENT] [nvarchar](150) COLLATE Latin1_General_CI_AS NULL, + [ADDED_WHO] [nvarchar](50) COLLATE Latin1_General_CI_AS NOT NULL, + [ADDED_WHEN] [datetime] NOT NULL, + [CHANGED_WHO] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL, + [CHANGED_WHEN] [datetime] NULL, + + CONSTRAINT [PK_TBDEX_TMP_PROCESS] PRIMARY KEY NONCLUSTERED +( + [GUID] ASC +) +)WITH ( MEMORY_OPTIMIZED = ON , DURABILITY = SCHEMA_ONLY ) +GO + +ALTER TABLE [dbo].[TBDEX_TMP_PROCESS] ADD CONSTRAINT [DF_TBDEX_TMP_PROCESS_ADDED_WHO] DEFAULT ('DEFAULT') FOR [ADDED_WHO] +GO + +ALTER TABLE [dbo].[TBDEX_TMP_PROCESS] ADD CONSTRAINT [DF_TBDEX_TMP_PROCESS_ADDED_WHEN] DEFAULT (getdate()) FOR [ADDED_WHEN] +GO + +ALTER TABLE [dbo].[TBDEX_TMP_PROCESS] ADD INDEX [IX_TBDEX_TMP_PROCESS_PROFILE_BATCH] NONCLUSTERED ([PROFILE_ID],[BATCH_ID]); +GO + + diff --git a/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_TMP_PROCESS_REFERENCES].sql b/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_TMP_PROCESS_REFERENCES].sql new file mode 100644 index 0000000..b4f4e2e --- /dev/null +++ b/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_TMP_PROCESS_REFERENCES].sql @@ -0,0 +1,48 @@ +USE [DD_ECM] +GO + +/****** Object: Table [dbo].[TBDEX_TMP_PROCESS_REFERENCES] Script Date: 07.12.2025 23:29:37 ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[TBDEX_TMP_PROCESS_REFERENCES] +( + [GUID] [bigint] IDENTITY(1,1) NOT NULL, + [PROFILE_ID] [bigint] NOT NULL, + [BATCH_ID] [nvarchar](25) COLLATE Latin1_General_CI_AS NOT NULL, + [REFERENCE1] [nvarchar](150) COLLATE Latin1_General_CI_AS NULL, + [REFERENCE2] [nvarchar](150) COLLATE Latin1_General_CI_AS NULL, + [REFERENCE3] [nvarchar](150) COLLATE Latin1_General_CI_AS NULL, + [REFERENCE4] [nvarchar](150) COLLATE Latin1_General_CI_AS NULL, + [REFERENCE5] [nvarchar](150) COLLATE Latin1_General_CI_AS NULL, + [EXTERNAL_REFERENCE1] [nvarchar](2000) COLLATE Latin1_General_CI_AS NULL, + [EXTERNAL_REFERENCE2] [nvarchar](2000) COLLATE Latin1_General_CI_AS NULL, + [EXTERNAL_REFERENCE3] [nvarchar](2000) COLLATE Latin1_General_CI_AS NULL, + [EXTERNAL_REFERENCE4] [nvarchar](2000) COLLATE Latin1_General_CI_AS NULL, + [EXTERNAL_REFERENCE5] [nvarchar](2000) COLLATE Latin1_General_CI_AS NULL, + [EXPORT_NUMBER_COUNTER] [bigint] NULL, + [EXPORT_NUMBER] [nvarchar](25) COLLATE Latin1_General_CI_AS NULL, + [COMMENT] [nvarchar](150) COLLATE Latin1_General_CI_AS NULL, + [ADDED_WHO] [nvarchar](50) COLLATE Latin1_General_CI_AS NOT NULL, + [ADDED_WHEN] [datetime] NOT NULL, + + CONSTRAINT [PK_TBDEX_TMP_PROCESS_REFERENCES] PRIMARY KEY NONCLUSTERED +( + [GUID] ASC +) +)WITH ( MEMORY_OPTIMIZED = ON , DURABILITY = SCHEMA_ONLY ) +GO + +ALTER TABLE [dbo].[TBDEX_TMP_PROCESS_REFERENCES] ADD CONSTRAINT [DF_TBDEX_TMP_PROCESS_REFERENCES_ADDED_WHO] DEFAULT ('DEFAULT') FOR [ADDED_WHO] +GO + +ALTER TABLE [dbo].[TBDEX_TMP_PROCESS_REFERENCES] ADD CONSTRAINT [DF_TBDEX_TMP_PROCESS_REFERENCES_ADDED_WHEN] DEFAULT (getdate()) FOR [ADDED_WHEN] +GO + +ALTER TABLE [dbo].[TBDEX_TMP_PROCESS_REFERENCES] ADD INDEX [IX_TBDEX_TMP_PROCESS_REFERENCES_PROFILE_BATCH] NONCLUSTERED ([PROFILE_ID],[BATCH_ID]); +GO + + diff --git a/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_TMP_QUERY].sql b/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_TMP_QUERY].sql new file mode 100644 index 0000000..0593036 --- /dev/null +++ b/current/[DD_ECM]-Database/DEX_SQL/[TBDEX_TMP_QUERY].sql @@ -0,0 +1,37 @@ +USE [DD_ECM] +GO + +/****** Object: Table [dbo].[TBDEX_TMP_QUERY] Script Date: 07.12.2025 23:30:22 ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[TBDEX_TMP_QUERY] +( + [GUID] [bigint] IDENTITY(1,1) NOT NULL, + [PROFILE_ID] [bigint] NOT NULL, + [BATCH_ID] [nvarchar](25) COLLATE Latin1_General_CI_AS NOT NULL, + [QUERY] [nvarchar](max) COLLATE Latin1_General_CI_AS NOT NULL, + [COMMENT] [nvarchar](150) COLLATE Latin1_General_CI_AS NULL, + [ADDED_WHO] [nvarchar](50) COLLATE Latin1_General_CI_AS NOT NULL, + [ADDED_WHEN] [datetime] NOT NULL, + + CONSTRAINT [PK_TBDEX_TMP_QUERY] PRIMARY KEY NONCLUSTERED +( + [GUID] ASC +) +)WITH ( MEMORY_OPTIMIZED = ON , DURABILITY = SCHEMA_ONLY ) +GO + +ALTER TABLE [dbo].[TBDEX_TMP_QUERY] ADD CONSTRAINT [DF_TBDEX_TMP_QUERY_ADDED_WHO] DEFAULT ('DEFAULT') FOR [ADDED_WHO] +GO + +ALTER TABLE [dbo].[TBDEX_TMP_QUERY] ADD CONSTRAINT [DF_TBDEX_TMP_QUERY_ADDED_WHEN] DEFAULT (getdate()) FOR [ADDED_WHEN] +GO + +ALTER TABLE [dbo].[TBDEX_TMP_QUERY] ADD INDEX [IX_TBDEX_TMP_QUERY_PROFILE_BATCH] NONCLUSTERED ([PROFILE_ID],[BATCH_ID]); +GO + + diff --git a/current/[DD_ECM]-Database/DEX_SQL/[VWDEX_OUT].sql b/current/[DD_ECM]-Database/DEX_SQL/[VWDEX_OUT].sql new file mode 100644 index 0000000..82813c7 --- /dev/null +++ b/current/[DD_ECM]-Database/DEX_SQL/[VWDEX_OUT].sql @@ -0,0 +1,58 @@ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +-- [VWDEX_OUT] +-- ================================================================= +-- Vereint die Datenabfragen aus der OUTPUT und OUTPUT Reference TB +-- +-- Returns: SQL table +-- ================================================================= +-- Copyright (c) 2025 by Digital Data GmbH +-- +-- Digital Data GmbH � Ludwig-Rinn-Strasse 16 � D-35452 Heuchelheim +-- Tel.: 0641/202360 � E-Mail: info-flow@digitaldata.works +-- ================================================================= +-- Creation Date / Author: 28.02.2025 / MK +-- Version Date / Editor: 28.02.2025 / MK +-- Version Number: 1.0.0.0 +-- ================================================================= +-- History: + +CREATE OR ALTER VIEW [dbo].[VWDEX_OUT] +as +SELECT + [O].[GUID], + [O].[PROFILE_ID], + [O].[BATCH_ID], + [O].[CONTENT], + [O].[EXPORT_FILE_NAME], + [O].[EXPORT_FILE_HASH_TYPE], + [O].[EXPORT_FILE_HASH_VALUE], + [O].[EXPORT_WHEN], + [O].[EXPORT_STATUS], + [O].[EXPORT_STATUS_MESSAGE], + [O].[COMMENT], + [O].[ADDED_WHO], + [O].[ADDED_WHEN], + [O].[CHANGED_WHO], + [O].[CHANGED_WHEN], + [OR].[EXPORT_NUMBER], + [OR].[REFERENCE1], + [OR].[REFERENCE2], + [OR].[REFERENCE3], + [OR].[REFERENCE4], + [OR].[REFERENCE5], + [OR].[EXTERNAL_REFERENCE1], + [OR].[EXTERNAL_REFERENCE2], + [OR].[EXTERNAL_REFERENCE3], + [OR].[EXTERNAL_REFERENCE4], + [OR].[EXTERNAL_REFERENCE5] + + FROM [TBDEX_OUT] AS [O] + INNER JOIN [TBDEX_OUT_REFERENCES] AS [OR] ON [O].[GUID] = [OR].[OUT_ID]; + +GO + + diff --git a/current/[DD_ECM]-Database/DEX_SQL/[VWDEX_PROFILE].sql b/current/[DD_ECM]-Database/DEX_SQL/[VWDEX_PROFILE].sql new file mode 100644 index 0000000..3415ecd --- /dev/null +++ b/current/[DD_ECM]-Database/DEX_SQL/[VWDEX_PROFILE].sql @@ -0,0 +1,32 @@ +CREATE OR ALTER VIEW [VWDEX_PROFILE] +as +SELECT + [CFG_PROFILE].[GUID], + [CFG_PROFILE].[ACTIVE], + [CFG_PROFILE].[PROFILE_NAME], + [CFG_PROFILE].[DESCRIPTION], + [CFG_PROFILE].[MANDANTOR], + [CFG_PROFILE].[EXPORT_TYPE], + [CFG_PROFILE].[EXPORT_NUMBER_SCHEMA], + [CFG_PROFILE].[DEFAULT_DATA_SEPARATOR], + CASE + WHEN [CFG_PROFILE].[LOG_LEVEL] IS NULL -- In case of using the LOG_LEVEL Parameter + THEN 'INFO' + + WHEN [CFG_PROFILE].[LOG_LEVEL] NOT IN ('INFO','WARN','ERROR') + THEN 'INFO' + + ELSE [CFG_PROFILE].[LOG_LEVEL] + END as 'LOG_LEVEL', + [CFG_PROFILE].[LANGUAGE], + [CFG_PROFILE].[ADDED_WHO], + [CFG_PROFILE].[ADDED_WHEN], + [CFG_PROFILE].[CHANGED_WHO], + [CFG_PROFILE].[CHANGED_WHEN], + [RUN_PROFILE].[FIRST_RUN], + [RUN_PROFILE].[LAST_RUN], + [RUN_PROFILE].[LAST_BATCH_ID], + [RUN_PROFILE].[LAST_RESULT] + + FROM [TBDEX_CFG_PROFILE] as [CFG_PROFILE] + LEFT JOIN [TBDEX_RUN_PROFILE] as [RUN_PROFILE] ON [CFG_PROFILE].[GUID] = [RUN_PROFILE].[PROFILE_ID]; diff --git a/current/[DD_ECM]-Database/DEX_SQL/[VWDEX_RESOURCES].sql b/current/[DD_ECM]-Database/DEX_SQL/[VWDEX_RESOURCES].sql new file mode 100644 index 0000000..0734a22 --- /dev/null +++ b/current/[DD_ECM]-Database/DEX_SQL/[VWDEX_RESOURCES].sql @@ -0,0 +1,22 @@ +CREATE OR ALTER VIEW [VWDEX_RESOURCES] +as +SELECT [CFG_RESOURCES].[GUID], + [CFG_RESOURCES].[PROFILE_ID], + [CFG_RESOURCES].[ACTIVE], + [CFG_RESOURCES].[SEQUENCE], + [CFG_RESOURCES].[PLACEHOLDER_NAME], + [CFG_RESOURCES].[PLACEHOLDER_TYPE], + [CFG_RESOURCES].[PLACEHOLDER], + CASE + WHEN [CFG_RESOURCES].[ERROR_ACTION] = 0 + THEN 'STOP' + WHEN [CFG_RESOURCES].[ERROR_ACTION] = 1 + THEN 'CONTINUE' + ELSE 'UNDEFINED' + END as 'ERROR_ACTION', + [CFG_RESOURCES].[COMMENT], + [CFG_RESOURCES].[ADDED_WHO], + [CFG_RESOURCES].[ADDED_WHEN], + [CFG_RESOURCES].[CHANGED_WHO], + [CFG_RESOURCES].[CHANGED_WHEN] + FROM [dbo].[TBDEX_CFG_RESOURCES] as [CFG_RESOURCES]; diff --git a/current/[DD_SYS]-Database/[PRDD_GET_DATABASE_OBJECT]/[PRDD_GET_DATABASE_OBJECT].sql b/current/[DD_SYS]-Database/[PRDD_GET_DATABASE_OBJECT]/[PRDD_GET_DATABASE_OBJECT].sql new file mode 100644 index 0000000..890f682 --- /dev/null +++ b/current/[DD_SYS]-Database/[PRDD_GET_DATABASE_OBJECT]/[PRDD_GET_DATABASE_OBJECT].sql @@ -0,0 +1,1184 @@ +USE [DD_SYS] +GO + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +-- [PRDD_GET_DATABASE_OBJECT] +-- ================================================================= +-- Searches all user databases (excluding system DBs) for a search term in: +-- (1) Module definitions (procedures, views, functions, triggers) +-- (2) Table names +-- (3) Column names +-- (4) Data values in text-like table columns (optional) +-- +-- Optional: Replace @pSEARCHVALUE with @pREPLACEWITH inside found module definitions +-- and/or data values in text-like table columns. +-- Minimum requirement: MS SQL Server 2016 +-- +-- Returns: INT Value - 0 = Everything worked well +-- ================================================================= +-- Copyright (c) 2026 by Digital Data GmbH +-- +-- Digital Data GmbH Ludwig-Rinn-Strasse 16 D-35452 Heuchelheim +-- Tel.: 0641/202360 E-Mail: info-flow@digitaldata.works +-- ================================================================= +-- Creation Date / Author: 05.02.2026 / GPT +-- Version Date / Editor: 16.02.2026 / GPT +-- Version Number: 1.2.2.0 +-- ================================================================= +-- History: +-- 05.02.2026 / GPT - First Version (project style) +-- 05.02.2026 / GPT - Added flow PRINT messages, removed compatibility wrapper +-- 05.02.2026 / GPT - Renamed to PRDD_GET_DATABASE_OBJECT +-- 05.02.2026 / GPT - Temp table naming changed to: #TBDD_GET_DATABASE_OBJECT_ +-- 05.02.2026 / GPT - Critical review fixes: explicit SET options for replace, improved error context, replace warnings +-- 05.02.2026 / GPT - Added optional data-value scan across textual table columns +-- 05.02.2026 / GPT - Added optional data-value replace with dedicated log/resultset +-- 06.02.2026 / GPT - Collation conflict fixes across cross-database scans and summaries (LIKE/EQUAL) +-- 06.02.2026 / GPT - Added safe non-execute scan/plan SQL path to avoid compile-time collation conflicts +-- 16.02.2026 / GPT - F01: LIKE-Wildcards (%,_,[) im Suchbegriff werden nun escaped +-- 16.02.2026 / GPT - F02: Konsistente COLLATE-Angabe auf @sv in beiden SQL-Pfaden +-- 16.02.2026 / GPT - F04: Cursor db_cur wird vor RETURN bei Collation-Fehler sauber geschlossen +-- 16.02.2026 / GPT - F05: Kommentare werden vor CREATE-Position-Erkennung entfernt (Spaces preserving) + +CREATE OR ALTER PROCEDURE [dbo].[PRDD_GET_DATABASE_OBJECT] ( + @pSEARCHVALUE NVARCHAR(100) = NULL, -- Search term + @pINCLUDEDATABASES NVARCHAR(MAX) = NULL, -- Optional whitelist (CSV): 'DB1,DB2' -> only these are searched + @pEXCLUDEDATABASES NVARCHAR(MAX) = NULL, -- Optional blacklist (CSV): 'DB3,DB4' -> excluded from search + @pREPLACEWITH NVARCHAR(100) = NULL, -- Optional replacement term (module definitions / data values) + @pDOREPLACE BIT = 0, -- 1 = execute replacement, 0 = only search / plan + @pINCLUDEDATAVALUES BIT = 1, -- 1 = also scan text-like data values in tables, 0 = skip data scan + @pDOREPLACEDATAVALUES BIT = 0 -- 1 = execute data-value replace, 0 = only data scan / plan +) +AS +BEGIN + + --================================================-- Set session options --===============================================-- + SET NOCOUNT ON; + SET ANSI_NULLS ON; + SET QUOTED_IDENTIFIER ON; + ---------------------------------------------------------------------------------------------------------------------------- + + --=========================================-- Parameter copies (avoid sniffing) --========================================-- + DECLARE @SEARCHVALUE NVARCHAR(100) = LTRIM(RTRIM(ISNULL(@pSEARCHVALUE,N''))), + @INCLUDEDATABASES NVARCHAR(MAX) = NULLIF(LTRIM(RTRIM(ISNULL(@pINCLUDEDATABASES,N''))),N''), + @EXCLUDEDATABASES NVARCHAR(MAX) = NULLIF(LTRIM(RTRIM(ISNULL(@pEXCLUDEDATABASES,N''))),N''), + @REPLACEWITH NVARCHAR(100) = NULLIF(LTRIM(RTRIM(ISNULL(@pREPLACEWITH,N''))),N''), + @DOREPLACE BIT = ISNULL(@pDOREPLACE,0), + @INCLUDEDATAVALUES BIT = ISNULL(@pINCLUDEDATAVALUES,1), + @DOREPLACEDATAVALUES BIT = ISNULL(@pDOREPLACEDATAVALUES,0); + ---------------------------------------------------------------------------------------------------------------------------- + + --=================================================-- Declare runtime variables --========================================-- + DECLARE @MY_PROCEDURE_NAME NVARCHAR(128) = OBJECT_NAME(@@PROCID); + DECLARE @SQLCommand NVARCHAR(MAX) = NULL, + @CurrentDB NVARCHAR(128) = NULL, + @CurrentDBCollation SYSNAME = NULL, + @return_status INT = 0, + @return_status_text NVARCHAR(MAX) = 'START PROCEDURE [' + @MY_PROCEDURE_NAME + '] @ ' + CONVERT(varchar(50),GETDATE(),120), + @return_error_text NVARCHAR(MAX) = ''; + + DECLARE @START_TIME DATETIME2(0) = SYSDATETIME(); + ---------------------------------------------------------------------------------------------------------------------------- + + IF (@DOREPLACEDATAVALUES = 1) BEGIN + SET @INCLUDEDATAVALUES = 1; -- replace implies scan + END; + + --=================================================-- Flow / Parameter output --==========================================-- + PRINT '===================================================================================================='; + PRINT @return_status_text; + PRINT ''; + PRINT 'PARAMETER01 - @SEARCHVALUE: ' + CONVERT(NVARCHAR(200),@SEARCHVALUE); + PRINT 'PARAMETER02 - @INCLUDEDATABASES: ' + CONVERT(NVARCHAR(200),ISNULL(@INCLUDEDATABASES,N'')); + PRINT 'PARAMETER03 - @EXCLUDEDATABASES: ' + CONVERT(NVARCHAR(200),ISNULL(@EXCLUDEDATABASES,N'')); + PRINT 'PARAMETER04 - @REPLACEWITH: ' + CONVERT(NVARCHAR(200),ISNULL(@REPLACEWITH,N'')); + PRINT 'PARAMETER05 - @DOREPLACE: ' + CONVERT(NVARCHAR(10),@DOREPLACE); + PRINT 'PARAMETER06 - @INCLUDEDATAVALUES: ' + CONVERT(NVARCHAR(10),@INCLUDEDATAVALUES); + PRINT 'PARAMETER07 - @DOREPLACEDATAVALUES: ' + CONVERT(NVARCHAR(10),@DOREPLACEDATAVALUES); + PRINT ''; + + IF (@REPLACEWITH IS NOT NULL) AND (LEN(@REPLACEWITH) > 0) AND (@DOREPLACE = 0) BEGIN + PRINT 'MODE: SEARCH + REPLACE PLAN (DRY-RUN) - no changes will be executed.'; + PRINT 'INFO: Resultset [OBJECT_DEFINITION] contains the CURRENT definition (no replace applied).'; + END + ELSE IF (@REPLACEWITH IS NOT NULL) AND (LEN(@REPLACEWITH) > 0) AND (@DOREPLACE = 1) BEGIN + PRINT 'MODE: SEARCH + REPLACE EXECUTION - module definitions may be ALTERed!'; + PRINT 'INFO: Resultset [OBJECT_DEFINITION] may contain PRE-REPLACE definitions (captured before ALTER).'; + END + ELSE BEGIN + PRINT 'MODE: SEARCH ONLY'; + END; + + IF ((@DOREPLACE = 1) OR (@DOREPLACEDATAVALUES = 1)) AND (@REPLACEWITH IS NOT NULL) AND (@SEARCHVALUE = @REPLACEWITH) BEGIN + PRINT 'WARNING: @SEARCHVALUE equals @REPLACEWITH -> replace execution will do no functional changes.'; + END; + + IF (@INCLUDEDATAVALUES = 1) BEGIN + PRINT 'DATA VALUE SCAN: ENABLED (text-like columns in user tables).'; + END + ELSE BEGIN + PRINT 'DATA VALUE SCAN: DISABLED.'; + END; + + IF (@DOREPLACEDATAVALUES = 1) BEGIN + PRINT 'DATA VALUE REPLACE: EXECUTION ENABLED (matched rows in text-like columns will be updated).'; + END + ELSE IF (@REPLACEWITH IS NOT NULL) AND (LEN(@REPLACEWITH) > 0) AND (@INCLUDEDATAVALUES = 1) BEGIN + PRINT 'DATA VALUE REPLACE: PLAN ONLY (no data row updates).'; + END; + + PRINT '----------------------------------------------------------------------------------------------------'; + ---------------------------------------------------------------------------------------------------------------------------- + + --=================================================-- Validate parameters --==============================================-- + IF (@SEARCHVALUE IS NULL) OR (LEN(@SEARCHVALUE) = 0) BEGIN + SET @return_status = 10; + SET @return_status_text = 'ERROR: @pSEARCHVALUE must not be NULL/empty!'; + PRINT @return_status_text; + RAISERROR(@return_status_text,16,1); + RETURN @return_status; + END; + + IF (@DOREPLACE = 1) AND ((@REPLACEWITH IS NULL) OR (LEN(@REPLACEWITH) = 0)) BEGIN + SET @return_status = 11; + SET @return_status_text = 'ERROR: @pREPLACEWITH must be set when @pDOREPLACE = 1!'; + PRINT @return_status_text; + RAISERROR(@return_status_text,16,1); + RETURN @return_status; + END; + + IF (@DOREPLACEDATAVALUES = 1) AND ((@REPLACEWITH IS NULL) OR (LEN(@REPLACEWITH) = 0)) BEGIN + SET @return_status = 12; + SET @return_status_text = 'ERROR: @pREPLACEWITH must be set when @pDOREPLACEDATAVALUES = 1!'; + PRINT @return_status_text; + RAISERROR(@return_status_text,16,1); + RETURN @return_status; + END; + + PRINT 'STEP: Parameter validation OK.'; + PRINT '----------------------------------------------------------------------------------------------------'; + ---------------------------------------------------------------------------------------------------------------------------- + + --==============================================-- Prepare temp tables --================================================-- + IF OBJECT_ID('tempdb..#TBDD_GET_DATABASE_OBJECT_DB_INCLUDE') IS NOT NULL BEGIN DROP TABLE #TBDD_GET_DATABASE_OBJECT_DB_INCLUDE; END; + IF OBJECT_ID('tempdb..#TBDD_GET_DATABASE_OBJECT_DB_EXCLUDE') IS NOT NULL BEGIN DROP TABLE #TBDD_GET_DATABASE_OBJECT_DB_EXCLUDE; END; + IF OBJECT_ID('tempdb..#TBDD_GET_DATABASE_OBJECT_DB_LIST') IS NOT NULL BEGIN DROP TABLE #TBDD_GET_DATABASE_OBJECT_DB_LIST; END; + + IF OBJECT_ID('tempdb..#TBDD_GET_DATABASE_OBJECT_RESULTS') IS NOT NULL BEGIN DROP TABLE #TBDD_GET_DATABASE_OBJECT_RESULTS; END; + IF OBJECT_ID('tempdb..#TBDD_GET_DATABASE_OBJECT_DATAMATCHES') IS NOT NULL BEGIN DROP TABLE #TBDD_GET_DATABASE_OBJECT_DATAMATCHES; END; + IF OBJECT_ID('tempdb..#TBDD_GET_DATABASE_OBJECT_DATAREPLACELOG') IS NOT NULL BEGIN DROP TABLE #TBDD_GET_DATABASE_OBJECT_DATAREPLACELOG; END; + IF OBJECT_ID('tempdb..#TBDD_GET_DATABASE_OBJECT_REPLACELOG') IS NOT NULL BEGIN DROP TABLE #TBDD_GET_DATABASE_OBJECT_REPLACELOG; END; + IF OBJECT_ID('tempdb..#TBDD_GET_DATABASE_OBJECT_ERRORS') IS NOT NULL BEGIN DROP TABLE #TBDD_GET_DATABASE_OBJECT_ERRORS; END; + + CREATE TABLE #TBDD_GET_DATABASE_OBJECT_DB_INCLUDE ( + [DBNAME] [NVARCHAR](128) NOT NULL PRIMARY KEY CLUSTERED ([DBNAME] ASC) + ); + + CREATE TABLE #TBDD_GET_DATABASE_OBJECT_DB_EXCLUDE ( + [DBNAME] [NVARCHAR](128) NOT NULL PRIMARY KEY CLUSTERED ([DBNAME] ASC) + ); + + CREATE TABLE #TBDD_GET_DATABASE_OBJECT_DB_LIST ( + [DBNAME] [NVARCHAR](128) NOT NULL PRIMARY KEY CLUSTERED ([DBNAME] ASC) + ); + + CREATE TABLE #TBDD_GET_DATABASE_OBJECT_RESULTS ( + [DATABASE_NAME] [NVARCHAR](128) NOT NULL, + [OBJECT_TYPE] [NVARCHAR](60) NOT NULL, + [SCHEMA_NAME] [NVARCHAR](128) NULL, + [OBJECT_NAME] [NVARCHAR](128) NULL, + [COLUMN_NAME] [NVARCHAR](128) NULL, + [OBJECT_DEFINITION] [NVARCHAR](MAX) NULL + ); + + CREATE TABLE #TBDD_GET_DATABASE_OBJECT_DATAMATCHES ( + [DATABASE_NAME] [NVARCHAR](128) NOT NULL, + [SCHEMA_NAME] [NVARCHAR](128) NOT NULL, + [TABLE_NAME] [NVARCHAR](128) NOT NULL, + [COLUMN_NAME] [NVARCHAR](128) NOT NULL, + [MATCH_COUNT] [INT] NOT NULL, + [SAMPLE_VALUE] [NVARCHAR](4000) NULL + ); + + CREATE TABLE #TBDD_GET_DATABASE_OBJECT_DATAREPLACELOG ( + [DATABASE_NAME] [NVARCHAR](128) NOT NULL, + [SCHEMA_NAME] [NVARCHAR](128) NOT NULL, + [TABLE_NAME] [NVARCHAR](128) NOT NULL, + [COLUMN_NAME] [NVARCHAR](128) NOT NULL, + [MATCH_COUNT] [INT] NOT NULL, + [UPDATED_ROWS] [INT] NOT NULL, + [ACTION] [NVARCHAR](20) NOT NULL, -- PLANNED / UPDATED / SKIPPED / ERROR + [ERROR_MESSAGE] [NVARCHAR](MAX) NULL + ); + + CREATE TABLE #TBDD_GET_DATABASE_OBJECT_REPLACELOG ( + [DATABASE_NAME] [NVARCHAR](128) NOT NULL, + [OBJECT_TYPE] [NVARCHAR](60) NOT NULL, + [SCHEMA_NAME] [NVARCHAR](128) NOT NULL, + [OBJECT_NAME] [NVARCHAR](128) NOT NULL, + [OCCURRENCE_COUNT] [INT] NOT NULL, + [ACTION] [NVARCHAR](20) NOT NULL, -- PLANNED / UPDATED / SKIPPED / ERROR + [ERROR_MESSAGE] [NVARCHAR](MAX) NULL + ); + + CREATE TABLE #TBDD_GET_DATABASE_OBJECT_ERRORS ( + [DATABASE_NAME] [NVARCHAR](128) NOT NULL, + [ERROR_NUMBER] [INT] NOT NULL, + [ERROR_MESSAGE] [NVARCHAR](MAX) NOT NULL + ); + + PRINT 'STEP: Temporary tables prepared (#TBDD_GET_DATABASE_OBJECT_*).'; + PRINT '----------------------------------------------------------------------------------------------------'; + ---------------------------------------------------------------------------------------------------------------------------- + + --===========================================-- Parse whitelist / blacklist --===========================================-- + IF (@INCLUDEDATABASES IS NOT NULL) BEGIN + INSERT INTO #TBDD_GET_DATABASE_OBJECT_DB_INCLUDE([DBNAME]) + SELECT DISTINCT TRY_CONVERT(NVARCHAR(128),LTRIM(RTRIM([value]))) + FROM string_split(@INCLUDEDATABASES,N',') + WHERE LTRIM(RTRIM([value])) <> N'' + AND TRY_CONVERT(NVARCHAR(128),LTRIM(RTRIM([value]))) IS NOT NULL; + + PRINT 'STEP: Whitelist parsed: ' + CONVERT(NVARCHAR(20),@@ROWCOUNT) + ' entry/entries.'; + END + ELSE BEGIN + PRINT 'STEP: Whitelist not set -> all user DBs are candidates (before blacklist).'; + END; + + IF (@EXCLUDEDATABASES IS NOT NULL) BEGIN + INSERT INTO #TBDD_GET_DATABASE_OBJECT_DB_EXCLUDE([DBNAME]) + SELECT DISTINCT TRY_CONVERT(NVARCHAR(128),LTRIM(RTRIM([value]))) + FROM string_split(@EXCLUDEDATABASES,N',') + WHERE LTRIM(RTRIM([value])) <> N'' + AND TRY_CONVERT(NVARCHAR(128),LTRIM(RTRIM([value]))) IS NOT NULL; + + PRINT 'STEP: Blacklist parsed: ' + CONVERT(NVARCHAR(20),@@ROWCOUNT) + ' entry/entries.'; + END + ELSE BEGIN + PRINT 'STEP: Blacklist not set.'; + END; + + PRINT '----------------------------------------------------------------------------------------------------'; + ---------------------------------------------------------------------------------------------------------------------------- + + --====================================-- Validate: DB names exist (whitelist/blacklist) --==============================-- + DECLARE @MissingInclude NVARCHAR(MAX) = NULL; + DECLARE @MissingExclude NVARCHAR(MAX) = NULL; + + SELECT @MissingInclude = + STUFF(( + SELECT N', ' + i.[DBNAME] + FROM #TBDD_GET_DATABASE_OBJECT_DB_INCLUDE i + LEFT JOIN [sys].[databases] d ON d.[name] = i.[DBNAME] + WHERE d.[name] IS NULL + FOR XML PATH(''), TYPE + ).value('.','NVARCHAR(MAX)'),1,2,N''); + + IF (@MissingInclude IS NOT NULL) AND (LEN(@MissingInclude) > 0) BEGIN + SET @return_status = 20; + SET @return_status_text = 'ERROR: Whitelist contains non-existing database(s): ' + @MissingInclude; + PRINT @return_status_text; + RAISERROR(@return_status_text,16,1); + RETURN @return_status; + END; + + SELECT @MissingExclude = + STUFF(( + SELECT N', ' + e.[DBNAME] + FROM #TBDD_GET_DATABASE_OBJECT_DB_EXCLUDE e + LEFT JOIN [sys].[databases] d ON d.[name] = e.[DBNAME] + WHERE d.[name] IS NULL + FOR XML PATH(''), TYPE + ).value('.','NVARCHAR(MAX)'),1,2,N''); + + IF (@MissingExclude IS NOT NULL) AND (LEN(@MissingExclude) > 0) BEGIN + SET @return_status = 21; + SET @return_status_text = 'ERROR: Blacklist contains non-existing database(s): ' + @MissingExclude; + PRINT @return_status_text; + RAISERROR(@return_status_text,16,1); + RETURN @return_status; + END; + + PRINT 'STEP: Database name validation OK (whitelist/blacklist).'; + PRINT '----------------------------------------------------------------------------------------------------'; + ---------------------------------------------------------------------------------------------------------------------------- + + --===========================-- Validate: included DBs are eligible & accessible --======================================-- + IF EXISTS (SELECT 1 FROM #TBDD_GET_DATABASE_OBJECT_DB_INCLUDE) BEGIN + + DECLARE @BadInclude NVARCHAR(MAX) = NULL; + + SELECT @BadInclude = + STUFF(( + SELECT N', ' + i.[DBNAME] + FROM #TBDD_GET_DATABASE_OBJECT_DB_INCLUDE i + LEFT JOIN [sys].[databases] d + ON d.[name] = i.[DBNAME] + AND d.[database_id] > 4 + AND d.[state_desc] = N'ONLINE' + AND d.[is_distributor] = 0 + AND d.[source_database_id] IS NULL + AND HAS_DBACCESS(d.[name]) = 1 + AND ((@DOREPLACE = 0 AND @DOREPLACEDATAVALUES = 0) OR d.[is_read_only] = 0) + WHERE d.[name] IS NULL + FOR XML PATH(''), TYPE + ).value('.','NVARCHAR(MAX)'),1,2,N''); + + IF (@BadInclude IS NOT NULL) AND (LEN(@BadInclude) > 0) BEGIN + SET @return_status = 22; + SET @return_status_text = 'ERROR: Whitelist contains database(s) that are not searchable (system/offline/snapshot/no access/read-only in replace-mode): ' + @BadInclude; + PRINT @return_status_text; + RAISERROR(@return_status_text,16,1); + RETURN @return_status; + END; + + END; + + PRINT 'STEP: Whitelist eligibility check OK.'; + PRINT '----------------------------------------------------------------------------------------------------'; + ---------------------------------------------------------------------------------------------------------------------------- + + --===========================================-- Build database worklist --===============================================-- + PRINT 'STEP: Build database worklist...'; + + INSERT INTO #TBDD_GET_DATABASE_OBJECT_DB_LIST([DBNAME]) + SELECT d.[name] + FROM [sys].[databases] d + WHERE d.[database_id] > 4 + AND d.[state_desc] = N'ONLINE' + AND d.[is_distributor] = 0 + AND d.[source_database_id] IS NULL + AND HAS_DBACCESS(d.[name]) = 1 + AND ((@DOREPLACE = 0 AND @DOREPLACEDATAVALUES = 0) OR d.[is_read_only] = 0) + AND ( + (EXISTS (SELECT 1 FROM #TBDD_GET_DATABASE_OBJECT_DB_INCLUDE) AND d.[name] IN (SELECT [DBNAME] FROM #TBDD_GET_DATABASE_OBJECT_DB_INCLUDE)) + OR + (NOT EXISTS (SELECT 1 FROM #TBDD_GET_DATABASE_OBJECT_DB_INCLUDE)) + ) + AND d.[name] NOT IN (SELECT [DBNAME] FROM #TBDD_GET_DATABASE_OBJECT_DB_EXCLUDE); + + DECLARE @DBCOUNT INT = (SELECT COUNT(*) FROM #TBDD_GET_DATABASE_OBJECT_DB_LIST); + PRINT 'STEP: Worklist created: ' + CONVERT(NVARCHAR(20),@DBCOUNT) + ' database(s).'; + PRINT '----------------------------------------------------------------------------------------------------'; + + IF (@DBCOUNT = 0) BEGIN + PRINT 'INFO: No databases to process based on whitelist/blacklist and eligibility filters.'; + PRINT 'END PROCEDURE [' + @MY_PROCEDURE_NAME + '] @ ' + CONVERT(varchar(50),GETDATE(),120); + PRINT '===================================================================================================='; + RETURN 0; + END; + ---------------------------------------------------------------------------------------------------------------------------- + + --===============================================-- Search / Replace loop --=============================================-- + BEGIN TRY + + DECLARE @DBINDEX INT = 0; + + DECLARE db_cur CURSOR LOCAL FAST_FORWARD FOR + SELECT [DBNAME] FROM #TBDD_GET_DATABASE_OBJECT_DB_LIST ORDER BY [DBNAME]; + + OPEN db_cur; + FETCH NEXT FROM db_cur INTO @CurrentDB; + + WHILE @@FETCH_STATUS = 0 + BEGIN + + SET @DBINDEX = @DBINDEX + 1; + SELECT @CurrentDBCollation = d.[collation_name] FROM [sys].[databases] d WHERE d.[name] COLLATE DATABASE_DEFAULT = @CurrentDB; + + IF (@CurrentDBCollation IS NULL) BEGIN + SET @return_status = 23; + SET @return_status_text = 'ERROR: Could not resolve collation for database [' + @CurrentDB + '].'; + PRINT @return_status_text; + IF CURSOR_STATUS('local','db_cur') >= 0 CLOSE db_cur; + IF CURSOR_STATUS('local','db_cur') >= -1 DEALLOCATE db_cur; + RAISERROR(@return_status_text,16,1); + RETURN @return_status; + END; + + PRINT '----------------------------------------------------------------------------------------------------'; + PRINT 'PROCESSING DATABASE [' + @CurrentDB + '] (' + CONVERT(NVARCHAR(10),@DBINDEX) + '/' + CONVERT(NVARCHAR(10),@DBCOUNT) + ')'; + PRINT 'STEP: Scan modules/tables/columns' + + CASE WHEN (@INCLUDEDATAVALUES = 1) THEN '/data values' ELSE '' END + + CASE WHEN (@REPLACEWITH IS NOT NULL) AND (LEN(@REPLACEWITH) > 0) THEN ' + replace handling (module/data plan)' ELSE '' END + + CASE WHEN (@DOREPLACEDATAVALUES = 1) THEN ' + data replace execution' ELSE '' END + + '.'; + + SET @SQLCommand = N' +BEGIN TRY + USE ' + QUOTENAME(@CurrentDB) + N'; + + DECLARE @sv NVARCHAR(100) = @pSEARCHVALUE; + DECLARE @svLIKE NVARCHAR(400) = REPLACE(REPLACE(REPLACE(@sv, N''['', N''[[]''), N''%'', N''[%]''), N''_'', N''[_]''); + DECLARE @rv NVARCHAR(100) = @pREPLACEWITH; + DECLARE @do BIT = @pDOREPLACE; + DECLARE @scanData BIT = @pINCLUDEDATAVALUES; + DECLARE @doDataReplace BIT = @pDOREPLACEDATAVALUES; + + -- 1) Modules (find) + INSERT INTO #TBDD_GET_DATABASE_OBJECT_RESULTS([DATABASE_NAME],[OBJECT_TYPE],[SCHEMA_NAME],[OBJECT_NAME],[COLUMN_NAME],[OBJECT_DEFINITION]) + SELECT + DB_NAME() AS [DATABASE_NAME], + o.[type_desc] AS [OBJECT_TYPE], + s.[name] AS [SCHEMA_NAME], + o.[name] AS [OBJECT_NAME], + NULL AS [COLUMN_NAME], + m.[definition] AS [OBJECT_DEFINITION] + FROM [sys].[sql_modules] m + JOIN [sys].[objects] o ON m.[object_id] = o.[object_id] + JOIN [sys].[schemas] s ON o.[schema_id] = s.[schema_id] + WHERE o.[type] COLLATE __COLLATION__ IN (N''P'',N''PC'',N''V'',N''FN'',N''TF'',N''IF'',N''TR'') + AND m.[definition] COLLATE __COLLATION__ LIKE N''%'' + (@svLIKE COLLATE __COLLATION__) + N''%''; + + -- Optional: plan/execute replacement (modules only) + IF (@rv IS NOT NULL) AND (LEN(@rv) > 0) BEGIN + + IF (@do = 0) BEGIN + + INSERT INTO #TBDD_GET_DATABASE_OBJECT_REPLACELOG([DATABASE_NAME],[OBJECT_TYPE],[SCHEMA_NAME],[OBJECT_NAME],[OCCURRENCE_COUNT],[ACTION],[ERROR_MESSAGE]) + SELECT + DB_NAME(), + o.[type_desc], + s.[name], + o.[name], + CASE WHEN LEN(@sv) = 0 THEN 0 + ELSE (LEN(m.[definition]) - LEN(REPLACE(m.[definition] COLLATE __COLLATION__,@sv COLLATE __COLLATION__,N''''))) / NULLIF(LEN(@sv),0) + END, + N''PLANNED'', + NULL + FROM [sys].[sql_modules] m + JOIN [sys].[objects] o ON m.[object_id] = o.[object_id] + JOIN [sys].[schemas] s ON o.[schema_id] = s.[schema_id] + WHERE o.[type] COLLATE __COLLATION__ IN (N''P'',N''PC'',N''V'',N''FN'',N''TF'',N''IF'',N''TR'') + AND m.[definition] COLLATE __COLLATION__ LIKE N''%'' + (@svLIKE COLLATE __COLLATION__) + N''%''; + + END ELSE BEGIN + + -- Ensure stable SET options for ALTER statements + SET ANSI_NULLS ON; + SET QUOTED_IDENTIFIER ON; + + DECLARE @object_id INT, + @type CHAR(2), + @typedesc NVARCHAR(60), + @schema NVARCHAR(128), + @name NVARCHAR(128), + @def NVARCHAR(MAX), + @newdef NVARCHAR(MAX), + @execdef NVARCHAR(MAX), + @u NVARCHAR(MAX), + @uClean NVARCHAR(MAX), + @cStart INT, + @cEnd INT, + @pos INT, + @occ INT; + + DECLARE cur CURSOR LOCAL FAST_FORWARD FOR + SELECT o.[object_id], o.[type], o.[type_desc], s.[name], o.[name], m.[definition] + FROM [sys].[sql_modules] m + JOIN [sys].[objects] o ON m.[object_id] = o.[object_id] + JOIN [sys].[schemas] s ON o.[schema_id] = s.[schema_id] + WHERE o.[type] COLLATE __COLLATION__ IN (N''P'',N''PC'',N''V'',N''FN'',N''TF'',N''IF'',N''TR'') + AND m.[definition] COLLATE __COLLATION__ LIKE N''%'' + (@svLIKE COLLATE __COLLATION__) + N''%''; + + OPEN cur; + FETCH NEXT FROM cur INTO @object_id, @type, @typedesc, @schema, @name, @def; + + WHILE @@FETCH_STATUS = 0 + BEGIN + + SET @occ = + CASE WHEN LEN(@sv) = 0 THEN 0 + ELSE (LEN(@def) - LEN(REPLACE(@def COLLATE __COLLATION__,@sv COLLATE __COLLATION__,N''''))) / NULLIF(LEN(@sv),0) + END; + + SET @newdef = REPLACE(@def COLLATE __COLLATION__,@sv COLLATE __COLLATION__,@rv); + + IF (@occ = 0) OR (@newdef = @def) BEGIN + INSERT INTO #TBDD_GET_DATABASE_OBJECT_REPLACELOG([DATABASE_NAME],[OBJECT_TYPE],[SCHEMA_NAME],[OBJECT_NAME],[OCCURRENCE_COUNT],[ACTION],[ERROR_MESSAGE]) + VALUES (DB_NAME(),@typedesc,@schema,@name,@occ,N''SKIPPED'',NULL); + + FETCH NEXT FROM cur INTO @object_id, @type, @typedesc, @schema, @name, @def; + CONTINUE; + END; + + SET @execdef = @newdef; + SET @u = UPPER(@execdef COLLATE __COLLATION__); + + -- F05: Strip comments from @u to avoid matching CREATE inside comments. + -- Replaces comment text with spaces to preserve character positions. + SET @uClean = @u; + -- Strip multi-line comments /* ... */ + SET @cStart = CHARINDEX(N''/*'', @uClean COLLATE __COLLATION__); + WHILE @cStart > 0 BEGIN + SET @cEnd = CHARINDEX(N''*/'', @uClean COLLATE __COLLATION__, @cStart + 2); + IF @cEnd > 0 + SET @uClean = LEFT(@uClean, @cStart - 1) + REPLICATE(N'' '', @cEnd - @cStart + 2) + SUBSTRING(@uClean, @cEnd + 2, LEN(@uClean)); + ELSE + BREAK; + SET @cStart = CHARINDEX(N''/*'', @uClean COLLATE __COLLATION__, @cStart + 1); + END; + -- Strip single-line comments -- ... + SET @cStart = CHARINDEX(N''--'', @uClean COLLATE __COLLATION__); + WHILE @cStart > 0 BEGIN + SET @cEnd = CHARINDEX(NCHAR(10), @uClean, @cStart); + IF @cEnd > 0 + SET @uClean = LEFT(@uClean, @cStart - 1) + REPLICATE(N'' '', @cEnd - @cStart) + SUBSTRING(@uClean, @cEnd, LEN(@uClean)); + ELSE BEGIN + SET @uClean = LEFT(@uClean, @cStart - 1) + REPLICATE(N'' '', LEN(@uClean) - @cStart + 1); + BREAK; + END; + SET @cStart = CHARINDEX(N''--'', @uClean COLLATE __COLLATION__, @cStart + 1); + END; + + -- If not already CREATE OR ALTER, try to replace first CREATE with ALTER for supported object kinds. + IF PATINDEX(N''%CREATE OR ALTER%'' COLLATE __COLLATION__, @uClean COLLATE __COLLATION__) = 0 BEGIN + + SET @pos = 0; + + IF @type COLLATE __COLLATION__ IN (N''P'',N''PC'') BEGIN + SET @pos = PATINDEX(N''%CREATE%PROCEDURE%'' COLLATE __COLLATION__, @uClean COLLATE __COLLATION__); + IF @pos = 0 SET @pos = PATINDEX(N''%CREATE%PROC%'' COLLATE __COLLATION__, @uClean COLLATE __COLLATION__); + END + ELSE IF @type COLLATE __COLLATION__ = N''V'' BEGIN + SET @pos = PATINDEX(N''%CREATE%VIEW%'' COLLATE __COLLATION__, @uClean COLLATE __COLLATION__); + END + ELSE IF @type COLLATE __COLLATION__ IN (N''FN'',N''TF'',N''IF'') BEGIN + SET @pos = PATINDEX(N''%CREATE%FUNCTION%'' COLLATE __COLLATION__, @uClean COLLATE __COLLATION__); + END + ELSE IF @type COLLATE __COLLATION__ = N''TR'' BEGIN + SET @pos = PATINDEX(N''%CREATE%TRIGGER%'' COLLATE __COLLATION__, @uClean COLLATE __COLLATION__); + END; + + IF (@pos > 0) BEGIN + SET @execdef = STUFF(@execdef COLLATE __COLLATION__,@pos,6,N''ALTER'' COLLATE __COLLATION__); -- CREATE(6) -> ALTER + END; + + END; + + BEGIN TRY + EXEC (@execdef); + + INSERT INTO #TBDD_GET_DATABASE_OBJECT_REPLACELOG([DATABASE_NAME],[OBJECT_TYPE],[SCHEMA_NAME],[OBJECT_NAME],[OCCURRENCE_COUNT],[ACTION],[ERROR_MESSAGE]) + VALUES (DB_NAME(),@typedesc,@schema,@name,@occ,N''UPDATED'',NULL); + + END TRY BEGIN CATCH + + INSERT INTO #TBDD_GET_DATABASE_OBJECT_REPLACELOG([DATABASE_NAME],[OBJECT_TYPE],[SCHEMA_NAME],[OBJECT_NAME],[OCCURRENCE_COUNT],[ACTION],[ERROR_MESSAGE]) + VALUES (DB_NAME(),@typedesc,@schema,@name,@occ,N''ERROR'',ERROR_MESSAGE() + N'' (Proc: '' + ISNULL(ERROR_PROCEDURE(),N'''') + N'' / Line: '' + CONVERT(NVARCHAR(10),ERROR_LINE()) + N'')''); + + END CATCH; + + FETCH NEXT FROM cur INTO @object_id, @type, @typedesc, @schema, @name, @def; + + END; + + CLOSE cur; + DEALLOCATE cur; + + END; + + END; + + -- 2) Tables by name + INSERT INTO #TBDD_GET_DATABASE_OBJECT_RESULTS([DATABASE_NAME],[OBJECT_TYPE],[SCHEMA_NAME],[OBJECT_NAME],[COLUMN_NAME],[OBJECT_DEFINITION]) + SELECT + DB_NAME(), + N''TABLE'', + s.[name], + t.[name], + NULL, + NULL + FROM [sys].[tables] t + JOIN [sys].[schemas] s ON t.[schema_id] = s.[schema_id] + WHERE t.[name] COLLATE __COLLATION__ LIKE N''%'' + (@svLIKE COLLATE __COLLATION__) + N''%''; + + -- 3) Columns by name + INSERT INTO #TBDD_GET_DATABASE_OBJECT_RESULTS([DATABASE_NAME],[OBJECT_TYPE],[SCHEMA_NAME],[OBJECT_NAME],[COLUMN_NAME],[OBJECT_DEFINITION]) + SELECT + DB_NAME(), + N''COLUMN'', + s.[name], + t.[name], + c.[name], + NULL + FROM [sys].[columns] c + JOIN [sys].[tables] t ON c.[object_id] = t.[object_id] + JOIN [sys].[schemas] s ON t.[schema_id] = s.[schema_id] + WHERE c.[name] COLLATE __COLLATION__ LIKE N''%'' + (@svLIKE COLLATE __COLLATION__) + N''%''; + + -- 4) Data values in text-like table columns (optional) + IF (@scanData = 1) BEGIN + + DECLARE @dSchema SYSNAME, + @dTable SYSNAME, + @dColumn SYSNAME, + @dSystemType INT, + @dSQL NVARCHAR(MAX), + @dUpdateSQL NVARCHAR(MAX), + @dMatchCount BIGINT, + @dUpdatedRows INT, + @dSample NVARCHAR(4000); + + DECLARE cur_data_cols CURSOR LOCAL FAST_FORWARD FOR + SELECT + s.[name] AS [SCHEMA_NAME], + t.[name] AS [TABLE_NAME], + c.[name] AS [COLUMN_NAME], + c.[system_type_id] AS [SYSTEM_TYPE_ID] + FROM [sys].[tables] t + JOIN [sys].[schemas] s ON t.[schema_id] = s.[schema_id] + JOIN [sys].[columns] c ON t.[object_id] = c.[object_id] + WHERE t.[is_ms_shipped] = 0 + AND c.[is_computed] = 0 + AND TYPE_NAME(c.[system_type_id]) COLLATE __COLLATION__ IN (N''varchar'',N''nvarchar'',N''char'',N''nchar'',N''text'',N''ntext''); + + OPEN cur_data_cols; + FETCH NEXT FROM cur_data_cols INTO @dSchema, @dTable, @dColumn, @dSystemType; + + WHILE @@FETCH_STATUS = 0 + BEGIN + + BEGIN TRY + + SET @dMatchCount = 0; + SET @dUpdatedRows = 0; + SET @dSample = NULL; + + SET @dSQL = N'' +SELECT + @pMatchCount = COUNT_BIG(1), + @pSample = MIN(LEFT(TRY_CONVERT(NVARCHAR(MAX),'' + QUOTENAME(@dColumn) + N'') COLLATE __COLLATION__,4000)) +FROM '' + QUOTENAME(@dSchema) + N''.'' + QUOTENAME(@dTable) + N'' WITH (NOLOCK) +WHERE TRY_CONVERT(NVARCHAR(MAX),'' + QUOTENAME(@dColumn) + N'') COLLATE __COLLATION__ LIKE N''''%'''' + (@pSVLIKE COLLATE __COLLATION__) + N''''%'''';''; + + EXEC sp_executesql + @dSQL, + N''@pSV NVARCHAR(100), @pSVLIKE NVARCHAR(400), @pMatchCount BIGINT OUTPUT, @pSample NVARCHAR(4000) OUTPUT'', + @pSV = @sv, + @pSVLIKE = @svLIKE, + @pMatchCount = @dMatchCount OUTPUT, + @pSample = @dSample OUTPUT; + + IF (ISNULL(@dMatchCount,0) > 0) BEGIN + INSERT INTO #TBDD_GET_DATABASE_OBJECT_DATAMATCHES([DATABASE_NAME],[SCHEMA_NAME],[TABLE_NAME],[COLUMN_NAME],[MATCH_COUNT],[SAMPLE_VALUE]) + VALUES ( + DB_NAME(), + @dSchema, + @dTable, + @dColumn, + CONVERT(INT,CASE WHEN @dMatchCount > 2147483647 THEN 2147483647 ELSE @dMatchCount END), + @dSample + ); + + IF (@rv IS NOT NULL) AND (LEN(@rv) > 0) BEGIN + + IF (@doDataReplace = 0) BEGIN + INSERT INTO #TBDD_GET_DATABASE_OBJECT_DATAREPLACELOG([DATABASE_NAME],[SCHEMA_NAME],[TABLE_NAME],[COLUMN_NAME],[MATCH_COUNT],[UPDATED_ROWS],[ACTION],[ERROR_MESSAGE]) + VALUES ( + DB_NAME(), + @dSchema, + @dTable, + @dColumn, + CONVERT(INT,CASE WHEN @dMatchCount > 2147483647 THEN 2147483647 ELSE @dMatchCount END), + 0, + N''PLANNED'', + NULL + ); + END + ELSE BEGIN + IF (@sv = @rv) BEGIN + INSERT INTO #TBDD_GET_DATABASE_OBJECT_DATAREPLACELOG([DATABASE_NAME],[SCHEMA_NAME],[TABLE_NAME],[COLUMN_NAME],[MATCH_COUNT],[UPDATED_ROWS],[ACTION],[ERROR_MESSAGE]) + VALUES ( + DB_NAME(), + @dSchema, + @dTable, + @dColumn, + CONVERT(INT,CASE WHEN @dMatchCount > 2147483647 THEN 2147483647 ELSE @dMatchCount END), + 0, + N''SKIPPED'', + N''@pSEARCHVALUE equals @pREPLACEWITH'' + ); + END + ELSE BEGIN + IF @dSystemType IN (35,99) BEGIN + INSERT INTO #TBDD_GET_DATABASE_OBJECT_DATAREPLACELOG([DATABASE_NAME],[SCHEMA_NAME],[TABLE_NAME],[COLUMN_NAME],[MATCH_COUNT],[UPDATED_ROWS],[ACTION],[ERROR_MESSAGE]) + VALUES ( + DB_NAME(), + @dSchema, + @dTable, + @dColumn, + CONVERT(INT,CASE WHEN @dMatchCount > 2147483647 THEN 2147483647 ELSE @dMatchCount END), + 0, + N''SKIPPED'', + N''Data type TEXT/NTEXT not supported for replace execution.'' + ); + END + ELSE BEGIN + SET @dUpdateSQL = N'' +UPDATE '' + QUOTENAME(@dSchema) + N''.'' + QUOTENAME(@dTable) + N'' +SET '' + QUOTENAME(@dColumn) + N'' = REPLACE(TRY_CONVERT(NVARCHAR(MAX),'' + QUOTENAME(@dColumn) + N'') COLLATE __COLLATION__, @pSV COLLATE __COLLATION__, @pRV COLLATE __COLLATION__) +WHERE TRY_CONVERT(NVARCHAR(MAX),'' + QUOTENAME(@dColumn) + N'') COLLATE __COLLATION__ LIKE N''''%'''' + (@pSVLIKE COLLATE __COLLATION__) + N''''%''''; +SET @pUpdatedRows = @@ROWCOUNT;''; + + EXEC sp_executesql + @dUpdateSQL, + N''@pSV NVARCHAR(100), @pSVLIKE NVARCHAR(400), @pRV NVARCHAR(100), @pUpdatedRows INT OUTPUT'', + @pSV = @sv, + @pSVLIKE = @svLIKE, + @pRV = @rv, + @pUpdatedRows = @dUpdatedRows OUTPUT; + + INSERT INTO #TBDD_GET_DATABASE_OBJECT_DATAREPLACELOG([DATABASE_NAME],[SCHEMA_NAME],[TABLE_NAME],[COLUMN_NAME],[MATCH_COUNT],[UPDATED_ROWS],[ACTION],[ERROR_MESSAGE]) + VALUES ( + DB_NAME(), + @dSchema, + @dTable, + @dColumn, + CONVERT(INT,CASE WHEN @dMatchCount > 2147483647 THEN 2147483647 ELSE @dMatchCount END), + ISNULL(@dUpdatedRows,0), + N''UPDATED'', + NULL + ); + END; + END; + END; + + END; + END; + + END TRY BEGIN CATCH + + INSERT INTO #TBDD_GET_DATABASE_OBJECT_ERRORS([DATABASE_NAME],[ERROR_NUMBER],[ERROR_MESSAGE]) + VALUES ( + DB_NAME(), + ERROR_NUMBER(), + N''DATA_SCAN ['' + @dSchema + N''.'' + @dTable + N''.'' + @dColumn + N'']: '' + + ERROR_MESSAGE() + + N'' (Proc: '' + ISNULL(ERROR_PROCEDURE(),N'''') + N'' / Line: '' + CONVERT(NVARCHAR(10),ERROR_LINE()) + N'')'' + ); + + IF (ISNULL(@dMatchCount,0) > 0) AND (@rv IS NOT NULL) AND (LEN(@rv) > 0) BEGIN + INSERT INTO #TBDD_GET_DATABASE_OBJECT_DATAREPLACELOG([DATABASE_NAME],[SCHEMA_NAME],[TABLE_NAME],[COLUMN_NAME],[MATCH_COUNT],[UPDATED_ROWS],[ACTION],[ERROR_MESSAGE]) + VALUES ( + DB_NAME(), + ISNULL(@dSchema,N''''), + ISNULL(@dTable,N''''), + ISNULL(@dColumn,N''''), + CONVERT(INT,CASE WHEN @dMatchCount > 2147483647 THEN 2147483647 ELSE @dMatchCount END), + 0, + N''ERROR'', + ERROR_MESSAGE() + N'' (Proc: '' + ISNULL(ERROR_PROCEDURE(),N'''') + N'' / Line: '' + CONVERT(NVARCHAR(10),ERROR_LINE()) + N'')'' + ); + END; + + END CATCH; + + FETCH NEXT FROM cur_data_cols INTO @dSchema, @dTable, @dColumn, @dSystemType; + END; + + CLOSE cur_data_cols; + DEALLOCATE cur_data_cols; + + END; + +END TRY BEGIN CATCH + INSERT INTO #TBDD_GET_DATABASE_OBJECT_ERRORS([DATABASE_NAME],[ERROR_NUMBER],[ERROR_MESSAGE]) + VALUES ( + N''' + REPLACE(@CurrentDB,'''','''''') + N''', + ERROR_NUMBER(), + ERROR_MESSAGE() + N'' (Proc: '' + ISNULL(ERROR_PROCEDURE(),N'''') + N'' / Line: '' + CONVERT(NVARCHAR(10),ERROR_LINE()) + N'')'' + ); +END CATCH;'; + + IF (@DOREPLACE = 0) AND (@DOREPLACEDATAVALUES = 0) BEGIN + SET @SQLCommand = N' +BEGIN TRY + USE ' + QUOTENAME(@CurrentDB) + N'; + + DECLARE @sv NVARCHAR(100) = @pSEARCHVALUE; + DECLARE @svLIKE NVARCHAR(400) = REPLACE(REPLACE(REPLACE(@sv, N''['', N''[[]''), N''%'', N''[%]''), N''_'', N''[_]''); + DECLARE @rv NVARCHAR(100) = @pREPLACEWITH; + DECLARE @scanData BIT = @pINCLUDEDATAVALUES; + + -- 1) Modules (find) + INSERT INTO #TBDD_GET_DATABASE_OBJECT_RESULTS([DATABASE_NAME],[OBJECT_TYPE],[SCHEMA_NAME],[OBJECT_NAME],[COLUMN_NAME],[OBJECT_DEFINITION]) + SELECT + DB_NAME(), + o.[type_desc], + s.[name], + o.[name], + NULL, + m.[definition] + FROM [sys].[sql_modules] m + JOIN [sys].[objects] o ON m.[object_id] = o.[object_id] + JOIN [sys].[schemas] s ON o.[schema_id] = s.[schema_id] + WHERE o.[type] COLLATE __COLLATION__ IN (N''P'',N''PC'',N''V'',N''FN'',N''TF'',N''IF'',N''TR'') + AND m.[definition] COLLATE __COLLATION__ LIKE N''%'' + (@svLIKE COLLATE __COLLATION__) + N''%''; + + -- Optional: replace plan (modules only) + IF (@rv IS NOT NULL) AND (LEN(@rv) > 0) BEGIN + INSERT INTO #TBDD_GET_DATABASE_OBJECT_REPLACELOG([DATABASE_NAME],[OBJECT_TYPE],[SCHEMA_NAME],[OBJECT_NAME],[OCCURRENCE_COUNT],[ACTION],[ERROR_MESSAGE]) + SELECT + DB_NAME(), + o.[type_desc], + s.[name], + o.[name], + CASE WHEN LEN(@sv) = 0 THEN 0 + ELSE (LEN(m.[definition]) - LEN(REPLACE(m.[definition] COLLATE __COLLATION__,@sv COLLATE __COLLATION__,N''''))) / NULLIF(LEN(@sv),0) + END, + N''PLANNED'', + NULL + FROM [sys].[sql_modules] m + JOIN [sys].[objects] o ON m.[object_id] = o.[object_id] + JOIN [sys].[schemas] s ON o.[schema_id] = s.[schema_id] + WHERE o.[type] COLLATE __COLLATION__ IN (N''P'',N''PC'',N''V'',N''FN'',N''TF'',N''IF'',N''TR'') + AND m.[definition] COLLATE __COLLATION__ LIKE N''%'' + (@svLIKE COLLATE __COLLATION__) + N''%''; + END; + + -- 2) Tables by name + INSERT INTO #TBDD_GET_DATABASE_OBJECT_RESULTS([DATABASE_NAME],[OBJECT_TYPE],[SCHEMA_NAME],[OBJECT_NAME],[COLUMN_NAME],[OBJECT_DEFINITION]) + SELECT + DB_NAME(), + N''TABLE'', + s.[name], + t.[name], + NULL, + NULL + FROM [sys].[tables] t + JOIN [sys].[schemas] s ON t.[schema_id] = s.[schema_id] + WHERE t.[name] COLLATE __COLLATION__ LIKE N''%'' + (@svLIKE COLLATE __COLLATION__) + N''%''; + + -- 3) Columns by name + INSERT INTO #TBDD_GET_DATABASE_OBJECT_RESULTS([DATABASE_NAME],[OBJECT_TYPE],[SCHEMA_NAME],[OBJECT_NAME],[COLUMN_NAME],[OBJECT_DEFINITION]) + SELECT + DB_NAME(), + N''COLUMN'', + s.[name], + t.[name], + c.[name], + NULL + FROM [sys].[columns] c + JOIN [sys].[tables] t ON c.[object_id] = t.[object_id] + JOIN [sys].[schemas] s ON t.[schema_id] = s.[schema_id] + WHERE c.[name] COLLATE __COLLATION__ LIKE N''%'' + (@svLIKE COLLATE __COLLATION__) + N''%''; + + -- 4) Data values in text-like table columns (optional) + IF (@scanData = 1) BEGIN + + DECLARE @dSchema SYSNAME, + @dTable SYSNAME, + @dColumn SYSNAME, + @dSQL NVARCHAR(MAX), + @dMatchCount BIGINT, + @dSample NVARCHAR(4000); + + DECLARE cur_data_cols CURSOR LOCAL FAST_FORWARD FOR + SELECT + s.[name] AS [SCHEMA_NAME], + t.[name] AS [TABLE_NAME], + c.[name] AS [COLUMN_NAME] + FROM [sys].[tables] t + JOIN [sys].[schemas] s ON t.[schema_id] = s.[schema_id] + JOIN [sys].[columns] c ON t.[object_id] = c.[object_id] + WHERE t.[is_ms_shipped] = 0 + AND c.[is_computed] = 0 + AND TYPE_NAME(c.[system_type_id]) COLLATE __COLLATION__ IN (N''varchar'',N''nvarchar'',N''char'',N''nchar'',N''text'',N''ntext''); + + OPEN cur_data_cols; + FETCH NEXT FROM cur_data_cols INTO @dSchema, @dTable, @dColumn; + + WHILE @@FETCH_STATUS = 0 + BEGIN + BEGIN TRY + SET @dMatchCount = 0; + SET @dSample = NULL; + + SET @dSQL = N'' +SELECT + @pMatchCount = COUNT_BIG(1), + @pSample = MIN(LEFT(TRY_CONVERT(NVARCHAR(MAX),'' + QUOTENAME(@dColumn) + N'') COLLATE __COLLATION__,4000)) +FROM '' + QUOTENAME(@dSchema) + N''.'' + QUOTENAME(@dTable) + N'' WITH (NOLOCK) +WHERE TRY_CONVERT(NVARCHAR(MAX),'' + QUOTENAME(@dColumn) + N'') COLLATE __COLLATION__ LIKE N''''%'''' + (@pSVLIKE COLLATE __COLLATION__) + N''''%'''';''; + + EXEC sp_executesql + @dSQL, + N''@pSV NVARCHAR(100), @pSVLIKE NVARCHAR(400), @pMatchCount BIGINT OUTPUT, @pSample NVARCHAR(4000) OUTPUT'', + @pSV = @sv, + @pSVLIKE = @svLIKE, + @pMatchCount = @dMatchCount OUTPUT, + @pSample = @dSample OUTPUT; + + IF (ISNULL(@dMatchCount,0) > 0) BEGIN + INSERT INTO #TBDD_GET_DATABASE_OBJECT_DATAMATCHES([DATABASE_NAME],[SCHEMA_NAME],[TABLE_NAME],[COLUMN_NAME],[MATCH_COUNT],[SAMPLE_VALUE]) + VALUES ( + DB_NAME(), + @dSchema, + @dTable, + @dColumn, + CONVERT(INT,CASE WHEN @dMatchCount > 2147483647 THEN 2147483647 ELSE @dMatchCount END), + @dSample + ); + + IF (@rv IS NOT NULL) AND (LEN(@rv) > 0) BEGIN + INSERT INTO #TBDD_GET_DATABASE_OBJECT_DATAREPLACELOG([DATABASE_NAME],[SCHEMA_NAME],[TABLE_NAME],[COLUMN_NAME],[MATCH_COUNT],[UPDATED_ROWS],[ACTION],[ERROR_MESSAGE]) + VALUES ( + DB_NAME(), + @dSchema, + @dTable, + @dColumn, + CONVERT(INT,CASE WHEN @dMatchCount > 2147483647 THEN 2147483647 ELSE @dMatchCount END), + 0, + N''PLANNED'', + NULL + ); + END; + END; + END TRY BEGIN CATCH + INSERT INTO #TBDD_GET_DATABASE_OBJECT_ERRORS([DATABASE_NAME],[ERROR_NUMBER],[ERROR_MESSAGE]) + VALUES ( + DB_NAME(), + ERROR_NUMBER(), + N''DATA_SCAN ['' + @dSchema + N''.'' + @dTable + N''.'' + @dColumn + N'']: '' + + ERROR_MESSAGE() + + N'' (Proc: '' + ISNULL(ERROR_PROCEDURE(),N'''') + N'' / Line: '' + CONVERT(NVARCHAR(10),ERROR_LINE()) + N'')'' + ); + END CATCH; + + FETCH NEXT FROM cur_data_cols INTO @dSchema, @dTable, @dColumn; + END; + + CLOSE cur_data_cols; + DEALLOCATE cur_data_cols; + END; + +END TRY BEGIN CATCH + INSERT INTO #TBDD_GET_DATABASE_OBJECT_ERRORS([DATABASE_NAME],[ERROR_NUMBER],[ERROR_MESSAGE]) + VALUES ( + N''' + REPLACE(@CurrentDB,'''','''''') + N''', + ERROR_NUMBER(), + ERROR_MESSAGE() + N'' (Proc: '' + ISNULL(ERROR_PROCEDURE(),N'''') + N'' / Line: '' + CONVERT(NVARCHAR(10),ERROR_LINE()) + N'')'' + ); +END CATCH;'; + END; + + SET @SQLCommand = REPLACE(@SQLCommand,N'__COLLATION__',@CurrentDBCollation); + + EXEC sp_executesql + @SQLCommand, + N'@pSEARCHVALUE NVARCHAR(100), @pREPLACEWITH NVARCHAR(100), @pDOREPLACE BIT, @pINCLUDEDATAVALUES BIT, @pDOREPLACEDATAVALUES BIT', + @pSEARCHVALUE = @SEARCHVALUE, + @pREPLACEWITH = @REPLACEWITH, + @pDOREPLACE = @DOREPLACE, + @pINCLUDEDATAVALUES = @INCLUDEDATAVALUES, + @pDOREPLACEDATAVALUES = @DOREPLACEDATAVALUES; + + -- Per-DB summary + DECLARE @cntModules INT = 0, + @cntTables INT = 0, + @cntColumns INT = 0, + @cntDataColumns INT = 0, + @cntDataRows BIGINT = 0, + @cntDataPlan INT = 0, + @cntDataUpd INT = 0, + @cntDataSkip INT = 0, + @cntDataErr INT = 0, + @cntDbErrors INT = 0; + + SELECT @cntTables = COUNT(*) FROM #TBDD_GET_DATABASE_OBJECT_RESULTS WHERE [DATABASE_NAME] COLLATE DATABASE_DEFAULT = @CurrentDB AND [OBJECT_TYPE] COLLATE DATABASE_DEFAULT = N'TABLE'; + SELECT @cntColumns = COUNT(*) FROM #TBDD_GET_DATABASE_OBJECT_RESULTS WHERE [DATABASE_NAME] COLLATE DATABASE_DEFAULT = @CurrentDB AND [OBJECT_TYPE] COLLATE DATABASE_DEFAULT = N'COLUMN'; + SELECT @cntModules = COUNT(*) FROM #TBDD_GET_DATABASE_OBJECT_RESULTS WHERE [DATABASE_NAME] COLLATE DATABASE_DEFAULT = @CurrentDB AND [OBJECT_TYPE] COLLATE DATABASE_DEFAULT NOT IN (N'TABLE',N'COLUMN'); + SELECT @cntDataColumns = COUNT(*) FROM #TBDD_GET_DATABASE_OBJECT_DATAMATCHES WHERE [DATABASE_NAME] COLLATE DATABASE_DEFAULT = @CurrentDB; + SELECT @cntDataRows = ISNULL(SUM(CONVERT(BIGINT,[MATCH_COUNT])),0) FROM #TBDD_GET_DATABASE_OBJECT_DATAMATCHES WHERE [DATABASE_NAME] COLLATE DATABASE_DEFAULT = @CurrentDB; + SELECT @cntDataPlan = COUNT(*) FROM #TBDD_GET_DATABASE_OBJECT_DATAREPLACELOG WHERE [DATABASE_NAME] COLLATE DATABASE_DEFAULT = @CurrentDB AND [ACTION] COLLATE DATABASE_DEFAULT = N'PLANNED'; + SELECT @cntDataUpd = COUNT(*) FROM #TBDD_GET_DATABASE_OBJECT_DATAREPLACELOG WHERE [DATABASE_NAME] COLLATE DATABASE_DEFAULT = @CurrentDB AND [ACTION] COLLATE DATABASE_DEFAULT = N'UPDATED'; + SELECT @cntDataSkip = COUNT(*) FROM #TBDD_GET_DATABASE_OBJECT_DATAREPLACELOG WHERE [DATABASE_NAME] COLLATE DATABASE_DEFAULT = @CurrentDB AND [ACTION] COLLATE DATABASE_DEFAULT = N'SKIPPED'; + SELECT @cntDataErr = COUNT(*) FROM #TBDD_GET_DATABASE_OBJECT_DATAREPLACELOG WHERE [DATABASE_NAME] COLLATE DATABASE_DEFAULT = @CurrentDB AND [ACTION] COLLATE DATABASE_DEFAULT = N'ERROR'; + SELECT @cntDbErrors = COUNT(*) FROM #TBDD_GET_DATABASE_OBJECT_ERRORS WHERE [DATABASE_NAME] COLLATE DATABASE_DEFAULT = @CurrentDB; + + PRINT 'RESULT: [' + @CurrentDB + '] Modules=' + CONVERT(NVARCHAR(20),@cntModules) + + ' Tables=' + CONVERT(NVARCHAR(20),@cntTables) + + ' Columns=' + CONVERT(NVARCHAR(20),@cntColumns) + + ' DataCols=' + CONVERT(NVARCHAR(20),@cntDataColumns) + + ' DataRows=' + CONVERT(NVARCHAR(20),@cntDataRows) + + ' Errors=' + CONVERT(NVARCHAR(20),@cntDbErrors); + + IF (@REPLACEWITH IS NOT NULL) AND (LEN(@REPLACEWITH) > 0) BEGIN + + DECLARE @cntPlanned INT = 0, + @cntUpdated INT = 0, + @cntSkipped INT = 0, + @cntReplErr INT = 0; + + SELECT @cntPlanned = COUNT(*) FROM #TBDD_GET_DATABASE_OBJECT_REPLACELOG WHERE [DATABASE_NAME] COLLATE DATABASE_DEFAULT = @CurrentDB AND [ACTION] COLLATE DATABASE_DEFAULT = N'PLANNED'; + SELECT @cntUpdated = COUNT(*) FROM #TBDD_GET_DATABASE_OBJECT_REPLACELOG WHERE [DATABASE_NAME] COLLATE DATABASE_DEFAULT = @CurrentDB AND [ACTION] COLLATE DATABASE_DEFAULT = N'UPDATED'; + SELECT @cntSkipped = COUNT(*) FROM #TBDD_GET_DATABASE_OBJECT_REPLACELOG WHERE [DATABASE_NAME] COLLATE DATABASE_DEFAULT = @CurrentDB AND [ACTION] COLLATE DATABASE_DEFAULT = N'SKIPPED'; + SELECT @cntReplErr = COUNT(*) FROM #TBDD_GET_DATABASE_OBJECT_REPLACELOG WHERE [DATABASE_NAME] COLLATE DATABASE_DEFAULT = @CurrentDB AND [ACTION] COLLATE DATABASE_DEFAULT = N'ERROR'; + + PRINT 'REPLACE: [' + @CurrentDB + '] Planned=' + CONVERT(NVARCHAR(20),@cntPlanned) + + ' Updated=' + CONVERT(NVARCHAR(20),@cntUpdated) + + ' Skipped=' + CONVERT(NVARCHAR(20),@cntSkipped) + + ' Errors=' + CONVERT(NVARCHAR(20),@cntReplErr); + + PRINT 'DATA REPLACE: [' + @CurrentDB + '] Planned=' + CONVERT(NVARCHAR(20),@cntDataPlan) + + ' Updated=' + CONVERT(NVARCHAR(20),@cntDataUpd) + + ' Skipped=' + CONVERT(NVARCHAR(20),@cntDataSkip) + + ' Errors=' + CONVERT(NVARCHAR(20),@cntDataErr); + + END; + + FETCH NEXT FROM db_cur INTO @CurrentDB; + + END; + + CLOSE db_cur; + DEALLOCATE db_cur; + + END TRY BEGIN CATCH + + IF CURSOR_STATUS('local','db_cur') >= 0 BEGIN + CLOSE db_cur; + END; + + IF CURSOR_STATUS('local','db_cur') >= -1 BEGIN + DEALLOCATE db_cur; + END; + + SELECT + @return_status = ERROR_NUMBER(), + @return_error_text = ERROR_MESSAGE() + ' (Proc: ' + ISNULL(ERROR_PROCEDURE(),'') + ' / Line: ' + CONVERT(NVARCHAR(10),ERROR_LINE()) + ')'; + SET @return_status_text = 'ERROR: ' + @return_error_text; + PRINT @return_status_text; + RAISERROR(@return_status_text,16,1); + RETURN @return_status; + + END CATCH; + ---------------------------------------------------------------------------------------------------------------------------- + + --================================================-- Global summary --====================================================-- + DECLARE @DBCOUNT_FINAL INT = (SELECT COUNT(*) FROM #TBDD_GET_DATABASE_OBJECT_DB_LIST); + + DECLARE @TOTAL_MODULES INT = 0, + @TOTAL_TABLES INT = 0, + @TOTAL_COLUMNS INT = 0, + @TOTAL_DATA_COLUMNS INT = 0, + @TOTAL_DATA_ROWS BIGINT = 0, + @TOTAL_ERRORS INT = 0, + @TOTAL_REPLACE_PLANNED INT = 0, + @TOTAL_REPLACE_UPDATED INT = 0, + @TOTAL_REPLACE_SKIPPED INT = 0, + @TOTAL_REPLACE_ERRORS INT = 0, + @TOTAL_DATA_REPLACE_PLANNED INT = 0, + @TOTAL_DATA_REPLACE_UPDATED INT = 0, + @TOTAL_DATA_REPLACE_SKIPPED INT = 0, + @TOTAL_DATA_REPLACE_ERRORS INT = 0, + @TOTAL_DATA_REPLACE_ROWS BIGINT = 0; + + SELECT @TOTAL_TABLES = COUNT(*) FROM #TBDD_GET_DATABASE_OBJECT_RESULTS WHERE [OBJECT_TYPE] COLLATE DATABASE_DEFAULT = N'TABLE'; + SELECT @TOTAL_COLUMNS = COUNT(*) FROM #TBDD_GET_DATABASE_OBJECT_RESULTS WHERE [OBJECT_TYPE] COLLATE DATABASE_DEFAULT = N'COLUMN'; + SELECT @TOTAL_MODULES = COUNT(*) FROM #TBDD_GET_DATABASE_OBJECT_RESULTS WHERE [OBJECT_TYPE] COLLATE DATABASE_DEFAULT NOT IN (N'TABLE',N'COLUMN'); + SELECT @TOTAL_DATA_COLUMNS = COUNT(*) FROM #TBDD_GET_DATABASE_OBJECT_DATAMATCHES; + SELECT @TOTAL_DATA_ROWS = ISNULL(SUM(CONVERT(BIGINT,[MATCH_COUNT])),0) FROM #TBDD_GET_DATABASE_OBJECT_DATAMATCHES; + SELECT @TOTAL_ERRORS = COUNT(*) FROM #TBDD_GET_DATABASE_OBJECT_ERRORS; + + SELECT @TOTAL_REPLACE_PLANNED = COUNT(*) FROM #TBDD_GET_DATABASE_OBJECT_REPLACELOG WHERE [ACTION] COLLATE DATABASE_DEFAULT = N'PLANNED'; + SELECT @TOTAL_REPLACE_UPDATED = COUNT(*) FROM #TBDD_GET_DATABASE_OBJECT_REPLACELOG WHERE [ACTION] COLLATE DATABASE_DEFAULT = N'UPDATED'; + SELECT @TOTAL_REPLACE_SKIPPED = COUNT(*) FROM #TBDD_GET_DATABASE_OBJECT_REPLACELOG WHERE [ACTION] COLLATE DATABASE_DEFAULT = N'SKIPPED'; + SELECT @TOTAL_REPLACE_ERRORS = COUNT(*) FROM #TBDD_GET_DATABASE_OBJECT_REPLACELOG WHERE [ACTION] COLLATE DATABASE_DEFAULT = N'ERROR'; + SELECT @TOTAL_DATA_REPLACE_PLANNED = COUNT(*) FROM #TBDD_GET_DATABASE_OBJECT_DATAREPLACELOG WHERE [ACTION] COLLATE DATABASE_DEFAULT = N'PLANNED'; + SELECT @TOTAL_DATA_REPLACE_UPDATED = COUNT(*) FROM #TBDD_GET_DATABASE_OBJECT_DATAREPLACELOG WHERE [ACTION] COLLATE DATABASE_DEFAULT = N'UPDATED'; + SELECT @TOTAL_DATA_REPLACE_SKIPPED = COUNT(*) FROM #TBDD_GET_DATABASE_OBJECT_DATAREPLACELOG WHERE [ACTION] COLLATE DATABASE_DEFAULT = N'SKIPPED'; + SELECT @TOTAL_DATA_REPLACE_ERRORS = COUNT(*) FROM #TBDD_GET_DATABASE_OBJECT_DATAREPLACELOG WHERE [ACTION] COLLATE DATABASE_DEFAULT = N'ERROR'; + SELECT @TOTAL_DATA_REPLACE_ROWS = ISNULL(SUM(CONVERT(BIGINT,[UPDATED_ROWS])),0) FROM #TBDD_GET_DATABASE_OBJECT_DATAREPLACELOG WHERE [ACTION] COLLATE DATABASE_DEFAULT = N'UPDATED'; + + PRINT '----------------------------------------------------------------------------------------------------'; + PRINT 'SUMMARY: Databases processed: ' + CONVERT(NVARCHAR(20),@DBCOUNT_FINAL); + PRINT 'SUMMARY: Modules=' + CONVERT(NVARCHAR(20),@TOTAL_MODULES) + + ' Tables=' + CONVERT(NVARCHAR(20),@TOTAL_TABLES) + + ' Columns=' + CONVERT(NVARCHAR(20),@TOTAL_COLUMNS) + + ' Errors=' + CONVERT(NVARCHAR(20),@TOTAL_ERRORS); + PRINT 'SUMMARY: DataColumnsWithMatches=' + CONVERT(NVARCHAR(20),@TOTAL_DATA_COLUMNS) + + ' DataRowsMatched=' + CONVERT(NVARCHAR(20),@TOTAL_DATA_ROWS); + + IF (@REPLACEWITH IS NOT NULL) AND (LEN(@REPLACEWITH) > 0) BEGIN + PRINT 'SUMMARY: Replace Planned=' + CONVERT(NVARCHAR(20),@TOTAL_REPLACE_PLANNED) + + ' Updated=' + CONVERT(NVARCHAR(20),@TOTAL_REPLACE_UPDATED) + + ' Skipped=' + CONVERT(NVARCHAR(20),@TOTAL_REPLACE_SKIPPED) + + ' Errors=' + CONVERT(NVARCHAR(20),@TOTAL_REPLACE_ERRORS); + PRINT 'SUMMARY: DataReplace Planned=' + CONVERT(NVARCHAR(20),@TOTAL_DATA_REPLACE_PLANNED) + + ' Updated=' + CONVERT(NVARCHAR(20),@TOTAL_DATA_REPLACE_UPDATED) + + ' Skipped=' + CONVERT(NVARCHAR(20),@TOTAL_DATA_REPLACE_SKIPPED) + + ' Errors=' + CONVERT(NVARCHAR(20),@TOTAL_DATA_REPLACE_ERRORS) + + ' UpdatedRows=' + CONVERT(NVARCHAR(20),@TOTAL_DATA_REPLACE_ROWS); + END; + + PRINT 'SUMMARY: Duration (sec): ' + CONVERT(NVARCHAR(20),DATEDIFF(SECOND,@START_TIME,SYSDATETIME())); + PRINT '----------------------------------------------------------------------------------------------------'; + ---------------------------------------------------------------------------------------------------------------------------- + + --================================================-- Output resultsets --=================================================-- + SELECT + [DATABASE_NAME], + [OBJECT_TYPE], + [SCHEMA_NAME], + [OBJECT_NAME], + [COLUMN_NAME], + [OBJECT_DEFINITION] + FROM #TBDD_GET_DATABASE_OBJECT_RESULTS + ORDER BY [DATABASE_NAME],[OBJECT_TYPE],[SCHEMA_NAME],[OBJECT_NAME],[COLUMN_NAME]; + + SELECT + [DATABASE_NAME], + [SCHEMA_NAME], + [TABLE_NAME], + [COLUMN_NAME], + [MATCH_COUNT], + [SAMPLE_VALUE] + FROM #TBDD_GET_DATABASE_OBJECT_DATAMATCHES + ORDER BY [DATABASE_NAME],[SCHEMA_NAME],[TABLE_NAME],[COLUMN_NAME]; + + SELECT + [DATABASE_NAME], + [OBJECT_TYPE], + [SCHEMA_NAME], + [OBJECT_NAME], + [OCCURRENCE_COUNT], + [ACTION], + [ERROR_MESSAGE] + FROM #TBDD_GET_DATABASE_OBJECT_REPLACELOG + ORDER BY [DATABASE_NAME],[ACTION],[OBJECT_TYPE],[SCHEMA_NAME],[OBJECT_NAME]; + + SELECT + [DATABASE_NAME], + [SCHEMA_NAME], + [TABLE_NAME], + [COLUMN_NAME], + [MATCH_COUNT], + [UPDATED_ROWS], + [ACTION], + [ERROR_MESSAGE] + FROM #TBDD_GET_DATABASE_OBJECT_DATAREPLACELOG + ORDER BY [DATABASE_NAME],[ACTION],[SCHEMA_NAME],[TABLE_NAME],[COLUMN_NAME]; + + SELECT + [DATABASE_NAME], + [ERROR_NUMBER], + [ERROR_MESSAGE] + FROM #TBDD_GET_DATABASE_OBJECT_ERRORS + ORDER BY [DATABASE_NAME]; + ---------------------------------------------------------------------------------------------------------------------------- + + SET @return_status_text = 'END PROCEDURE [' + @MY_PROCEDURE_NAME + '] @ ' + CONVERT(varchar(50),GETDATE(),120); + + PRINT ''; + PRINT @return_status_text; + PRINT '===================================================================================================='; + + Return @return_status; + +END; +GO