Einzelnen Beitrag anzeigen

Freiwilderer

Registriert seit: 26. Mai 2009
163 Beiträge
 
Delphi 7 Enterprise
 
#1

Tabellenwertfunktion in MSSQL 2008

  Alt 15. Aug 2010, 15:55
Datenbank: MSSQL • Version: 2008 • Zugriff über: ADODB
Hallo,

ich benutze gerade zum ersten mal eine Tabellenwertfunktion und bin mir nicht ganz sicher, was ich falsch mache.
hier erstmal kurz der code (den Code habe ich abgeändert, da es nur um den Aufbau geht, also keine Fragen über den Sinn dieser funktion bitte ;D)
SQL-Code:
CREATE FUNCTION [gl].[Get_BelegMwSt]
(
    @FromBelegnr   BIGINT = 0
   ,@TillBeletnr   BIGINT = 99
        ,@MwStSatz FLOAT
)

RETURNS @ResultTable TABLE(RecID BIGINT, Belegnr BIGINT, BetragNetto FLOAT, BetragBrutto FLOAT)
AS
BEGIN
DECLARE @iRecID    BIGINT
   ,@iBelegnr    BIGINT
   ,@iBetragNetto    FLOAT
   ,@iBetragBrutto FLOAT      

   INSERT INTO @ResultTable (RecID, Belegnr, BetragNetto)
   (SELECT RecID, Belegnr, BetragNetto
      FROM gl.Belege
     WHERE BelegNr >= @FromBelegnr   AND
                BelegNr <= @TillBelegnr                        
   
        --GetMwSt
   UPDATE @ResultTable
      SET BetragBrutto = (SELECT (B.BetragNetto * (100 + @MwStSatz)) /100
                                 FROM gl.Belege B
                                WHERE B.RecID = @ResultTable.RecID )
   RETURN
So, wenn ich das jetzt richtig versatnden habe, wird eine Temporäre Tabelle mit dem namen @ResultTable angelegt.
da kann man dann daten einfügen und ändern und mit Return wird die komplette tabelle ausgegeben.
Wenn ich aber versuche die Funktion abzuspeichern, kommt die Fehlermeldung:

Meldung 137, Ebene 16, Status 1, Prozedur Get_EPLStatusContradictory, Zeile 80
Die '@ResultTable'-Skalarvariable muss deklariert werden.

Aber ich dachte, das hätte ich mit der Zeile schon erledigt....
RETURNS @ResultTable TABLE(RecID BIGINT, Belegnr BIGINT, BetragNetto FLOAT, BetragBrutto FLOAT)

wäre super, wenn jemand von euch n tipp für mich hätte

mfg

Geändert von mkinzler (15. Aug 2010 um 15:58 Uhr) Grund: Code-Tag durch SQL-Tag ersetzt
  Mit Zitat antworten Zitat