Hallo zusammen,
laut folgendem Ticket soll es seit der 1.6.12. möglch sein per Workflow schreibende SQL-Befehle abzusetzen:
https://issues.jtl-software.de/issues/WAWI-49318
Ich bekomme leider noch immer ein "Query blocked".
Konkret möchte ich das Leben meiner Retourenabteilung erleichtern, in dem sie den Retourenstatus nicht für jede Position setzen müssen, sondern der Status für alle gleichzeitig gesetzt wird:
Was muss ich machen, um schreibende SQL's ausführen zu können?
Bisher habe ich folgenden Code als "Erweiterte Eigenschaft" hinterlegt:
laut folgendem Ticket soll es seit der 1.6.12. möglch sein per Workflow schreibende SQL-Befehle abzusetzen:
https://issues.jtl-software.de/issues/WAWI-49318
Ich bekomme leider noch immer ein "Query blocked".
Konkret möchte ich das Leben meiner Retourenabteilung erleichtern, in dem sie den Retourenstatus nicht für jede Position setzen müssen, sondern der Status für alle gleichzeitig gesetzt wird:
Was muss ich machen, um schreibende SQL's ausführen zu können?
Bisher habe ich folgenden Code als "Erweiterte Eigenschaft" hinterlegt:
Code:
{% capture query -%}
BEGIN
DECLARE @cRMRetoure nvarchar = {{ Vorgang.Retoure.Retourennummer }};
DECLARE @kRMRetoure int;
DECLARE @kRMRetourePos int;
DECLARE @kRMStatus int;
DECLARE @kRMStatusLast int;
DECLARE @kRMStatusNeu int;
DECLARE @kRMStatusVerlaufNeu int;
DECLARE @cKommentar nvarchar(255) = N'';
DECLARE @kBenutzer int = 2;
DECLARE @dErstellt datetime = CONVERT(datetime, GETDATE(), 120);
DECLARE @Identities TABLE (Id INT NOT NULL);
SET QUOTED_IDENTIFIER ON
/* Den Retourenstatus ermitteln, der zuletzt in dieser Retoure gesetzt wurde */
SET @kRMRetoure = (SELECT krmRetoure from tRMRetoure where cRetoureNr= @cRMRetoure);
SET @kRMStatusNeu = (SELECT TOP 1 kRMStatus from tRMStatusVerlauf WHERE kRMRetourePos in (SELECT kRMRetourePos from tRMRetourePos where kRMRetoure = @kRMRetoure) ORDER BY kRMStatusVerlauf DESC);
DECLARE cursor_tRMRetourePos
CURSOR FOR
SELECT kRMRetourePos FROM tRMRetourePos WHERE kRMRetoure = @kRMRetoure
OPEN cursor_tRMRetourePos
FETCH FROM cursor_tRMRetourePos INTO @kRMRetourePos;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @kRMStatusLast = (SELECT TOP 1 kRMStatus FROM [tRMStatusVerlauf] WHERE kRMRetourePos = @kRMRetourePos ORDER BY kRMStatusVerlauf DESC);
/* Nur wenn sich der Retourenstatus unterscheidet ausführen */
IF @kRMStatusNeu <> @kRMStatusLast
BEGIN
INSERT INTO [dbo].[tRMStatusVerlauf] ([kRMRetourePos], [kRMStatus], [cKommentar], [kBenutzer], [dErstellt])
OUTPUT INSERTED.[kRMStatusVerlauf] AS [Id] INTO @Identities
VALUES (@kRMRetourePos, @kRMStatusNeu, @cKommentar, @kBenutzer, @dErstellt);
SET @kRMStatusVerlaufNeu = (SELECT TOP 1 [Id] FROM @Identities ORDER BY [Id]);
UPDATE [dbo].[tRMRetourePos] SET kRMStatusVerlauf = @kRMStatusVerlaufNeu WHERE kRMRetourePos = @kRMRetourePos;
END
FETCH NEXT FROM cursor_tRMRetourePos INTO @kRMRetourePos;
END
CLOSE cursor_tRMRetourePos
DEALLOCATE cursor_tRMRetourePos
END
{% endcapture -%}
{% assign result = query | DirectQuery -%}
{{ result.Query }} lieferte {% if result.Fehlerhaft %}den Status: {{ result.Fehler }}{% else %}keinen Fehler.{% endif -%}