none
SQL Trigger mit Leeren Variablen RRS feed

  • Frage

  • Hallo,

    ich nutze in einem Trigger eine Berechnung

    SET @gSumme = (
    	SELECT SUM(tbl1.decPreisG) AS Summe
    		FROM tbl1
    				INNER JOIN inserted ON tbl1.Bereich = inserted.Bereich
    	WHERE tbl1.Bereich = inserted.Bereich AND tbl1.Bereich1 = 'VermAG'
    )

    Es kann jedoch vorkommen das keine Datensätze in der tbl1 enthalten sind, ich habe versucht

    IF @gSumme IS NULL SET @gSumme = 0

    zu setzen das funktioniert leider nicht, was mach ich dabei falsch?

    Danke

    Ralf

    Donnerstag, 5. Januar 2017 10:58

Antworten

  • Hallo Ralf,

    setze ein ISNULL außen um die SELECT Anweisung:

    SET @gSumme = ISNULL(
    	(SELECT SUM(tbl1.decPreisG) AS Summe FROM ...)
         , 0)

    (Beim SUM wirkt es nicht, wenn manchmal keine Zeilen gefunden werden, wie Du schreibst.)

    Gruß Elmar

    • Als Antwort markiert Joe72ka Donnerstag, 5. Januar 2017 13:31
    Donnerstag, 5. Januar 2017 12:43
  • Hallo Ralf,

    probier's mal mit:

    SELECT ISNULL( SUM( ... ), 0 ) AS Summe ...


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert Joe72ka Donnerstag, 5. Januar 2017 13:31
    Donnerstag, 5. Januar 2017 11:04
    Moderator

Alle Antworten

  • Hallo Ralf,

    probier mal ein

    coalesce(sum(tbl1.decPreisG), 0)  AS Summe

    Allerdings hätte das SET auch funktionieren sollen.

    Was bekommst Du für einen Fehler?

    Vielleicht postest Du auch mal den ganzen Trigger?


    Einen schönen Tag noch, Christoph -- Data Platform MVP - http://www.insidesql.org/blogs/cmu

    Donnerstag, 5. Januar 2017 11:04
  • Hallo Ralf,

    probier's mal mit:

    SELECT ISNULL( SUM( ... ), 0 ) AS Summe ...


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert Joe72ka Donnerstag, 5. Januar 2017 13:31
    Donnerstag, 5. Januar 2017 11:04
    Moderator
  • Hallo Ralf,

    setze ein ISNULL außen um die SELECT Anweisung:

    SET @gSumme = ISNULL(
    	(SELECT SUM(tbl1.decPreisG) AS Summe FROM ...)
         , 0)

    (Beim SUM wirkt es nicht, wenn manchmal keine Zeilen gefunden werden, wie Du schreibst.)

    Gruß Elmar

    • Als Antwort markiert Joe72ka Donnerstag, 5. Januar 2017 13:31
    Donnerstag, 5. Januar 2017 12:43
  • Hallo Elmar,

    nur zum Verständnis:

    SELECT ISNULL( SUM( ... ), 0 ) AS Summe ...

    würde also nicht funktionieren (inwiefern?) wenn beim SELECT an sich keine Datensätze zurückgegeben werden?

    Falls ja: Unter welchen Umständen passiert das? Denn bei verschiedenen Tests konnte ich das nicht nachvollziehen, da wird dann brav 0 zurückgegeben.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Donnerstag, 5. Januar 2017 13:35
    Moderator