Einzelnen Beitrag anzeigen

Freiwilderer

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

AW: Tabellenwertfunktion in MSSQL 2008

  Alt 16. Aug 2010, 08:15
hallo,
zeile 80 is quasi die hier
 WHERE B.RecID = @ResultTable.RecID ) das is die letzte über dem Return

@ Frank ... leider liegts nich daran, denn ich hab mich da einfach vertippt, als ich das hier rein geschrieben habe, wie gesagt, ging nur um die struktur

aber danke schonmal für die antworten

mfg

edit:

ich hab gerade festgestellt, dass das wohl nur bei dieser Konstruktion auftaucht

UPDATE @ResultTable
SET BetragBrutto = B.BetragNetto * (100 + @MwStSatz)) /100
FROM gl.Belege B
WHERE B.RecID = @ResultTable.RecID

mfg

nochmal edit

habs hinbekommen!
das problem war, dass man das @ResultTable.RecID so nicht schreiben kann, wenn man das aber nich davor geschrieben hat, sagte er, dass das feld nicht gebunden werden kann. Wenn man also die Felder in der TempTabelle anders nennt, funktionierts.

quasi so:
Code:
CREATE FUNCTION [gl].[Get_BelegMwSt]
(
    @FromBelegnr  BIGINT = 0
   ,@TillBeletnr  BIGINT = 99
        ,@MwStSatz FLOAT
)

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

   INSERT INTO @ResultTable (RecIDTmp, Belegnr, BetragNetto)
   (SELECT RecID, Belegnr, BetragNetto
      FROM gl.Belege
     WHERE BelegNr >= @FromBelegnr  AND
                BelegNr <= @TillBelegnr                      
   
        --GetMwSt
   UPDATE @ResultTable
      SET BetragBrutto = B.BetragNetto * (100 + @MwStSatz)) /100 
     FROM gl.Belege B
    WHERE B.RecID = RecIDTmp

   RETURN
mfg

Geändert von Freiwilderer (16. Aug 2010 um 08:57 Uhr)
  Mit Zitat antworten Zitat