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