Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Fehlerbehandlung von Stored Procedures (https://www.delphipraxis.net/103466-fehlerbehandlung-von-stored-procedures.html)

alzaimar 16. Nov 2007 07:57

Datenbank: MSSQL • Version: 2000 • Zugriff über: ADO

Fehlerbehandlung von Stored Procedures
 
Hi

Kleines Problem, wenig Zeit (deshalb müsst ihr ran :mrgreen: )

Ich habe auf dem Papier eine Stored Procedure, die wird über ADO irgendwie aufgerufen. Diese SP übermittelt Daten an einen anderen Server (mit INSERT). Nun kann es sein, das der andere Server nicht erreichbar ist. Dann soll die SP die Daten lokal zwischenspeichern.

Die Tatsache, ob das der Server nicht erreichbar ist, ermittle ich einfach über die @@Error-Variable (wenn's knallt, dann lokal zwischenspeichern). Das sollte auch funktionieren.

Ich will nun aber nicht, das dieser (und nur dieser!) Fehler an ADO zurückgemeldet wird.

Frage: Kann man die Generierung der Fehlermeldung auf SQL-Seite ausschalten, sodaß ADO davon nix mitbekommt, also so ne Art 'Try...Except End', oder 'ON ERROR CONTINUE'?

Die Alternative wäre, die Daten immer zwischenzuspeichern, und dann über einen separaten Task (z.B. jede Minute) die lokalen Daten zu übermitteln, der Kunde würde aber lieber die direkte Übermittlung sehen (ja ja, wenn die Kunden nicht wären).

alzaimar 19. Nov 2007 06:29

Re: Fehlerbehandlung von Stored Procedures
 
Muss untergegangen sein (push).

Hat Jemand eine Idee?

PaulJr 19. Nov 2007 08:08

Re: Fehlerbehandlung von Stored Procedures
 
Hallo Alzamir, :???:

ich bezweifle, dass Du die (SQL) Fehlermeldung so einfach unterdrücken kannst.

Ich benutze ADO nicht aber die Mechanismen sollten überall die Gleichen sein: Darum, ich z.B. erkenne nicht nur solche Fehler in entsprechenden Ereignissen sondern (um diese zu unterdrücken) behandle diese auch…

Viele Grüße
PaulJr

alzaimar 19. Nov 2007 08:39

Re: Fehlerbehandlung von Stored Procedures
 
Hau Paul,

ich bezweifle das auch, bin aber nicht allwissend. Ich habe gehofft, irgendeine obskure 'SET ERROR OFF' - Einstellung würde MSSQL das Maul stopfen. Ich befürchte, ich muss die Mittelschicht anfassen, was tödlich sein kann ('Never touch a running system').

Nun denn, Suizid als Hobby. Auch was neues.

Phoenix 19. Nov 2007 08:41

Re: Fehlerbehandlung von Stored Procedures
 
Strukturierte Fehlerbehandluung kennt der SQL Server 2000 nicht. Sorry. Das geht erst ab SQL Server 2005.

Elvis 19. Nov 2007 08:45

Re: Fehlerbehandlung von Stored Procedures
 
Würde es nicht mehr Sinn machen, das Ganze in einer nativen XProc zu lösen?
TSQL ist doch für alles jenseits einem SELECT und einer if-Clause viel zu drecks-eklig.
Gerade die Fehlerbehandlung wird keiner außer dir kapieren können...

Jelly 19. Nov 2007 08:48

Re: Fehlerbehandlung von Stored Procedures
 
Du kannst, wie du ja schon machst, über @@error den Fehler abfragen. Speichere den Wert in einer Zwischenvariablen und prüfe anschliessend über

SQL-Code:
if @myError <> 0 BEGIN
   goto ErrorHandler
END

-- Hier der normale Ablauf
Goto ExitProc

ErrorHandler:
Rollback Tran
return


ExitProc:
return
deinen Fehler.
Laut meinem Buch wird beim Fehler zum Label ErrorHandler gesprungen. Dort kannst du auf jeden Fall noch ein paar Aktionen durchführen. Ob der Return allerdings nun dennoch einen Fehler auf Clientseite auslöst, weiss ich nicht.

Hast du vielleicht eine Möglichkeit einen SQL Server der Version 2005 zu nutzen. Dort gibts ein neues Errorhandling über Try...catch Blöcke wie man sie von anderen Programmiersprachen her kennt. Da wird auf jeden Fall die Fehlermeldung beim Client unterbunden. Soll sie dennoch ausgelöst werden, reicht ein erneuter Raiserror im Catch-Block.

Jelly 19. Nov 2007 08:49

Re: Fehlerbehandlung von Stored Procedures
 
Zitat:

Zitat von Elvis
Gerade die Fehlerbehandlung wird keiner außer dir kapieren können...

Robert, du weisst aber schon dann man auch eigene Fehlermeldungen definieren kann... Sogar parametrisiert.

alzaimar 19. Nov 2007 08:52

Re: Fehlerbehandlung von Stored Procedures
 
Ich arbeite ausgiebig mit eigenen benutzerdefinierten Fehlermeldungen, das funktioniert wunderbar. Ich war/bin auf Version 2000 eingeschossen, sodaß der Hinweis auf den TRY-CATCH-Block der 2005er die Lösung meines Problemes darstellen könnte.

Ich glaub sogar, das Zielsystem ist ein 2005er, nur die Testumgebung (noch) eine alte Gurke.


Danke für den Hinweis!

Jelly 19. Nov 2007 08:54

Re: Fehlerbehandlung von Stored Procedures
 
Dann haste ja noch mal die letzte Ausfahrt erwischt :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:19 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz