AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Tabellenwertfunktion in MSSQL 2008
Thema durchsuchen
Ansicht
Themen-Optionen

Tabellenwertfunktion in MSSQL 2008

Ein Thema von Freiwilderer · begonnen am 15. Aug 2010 · letzter Beitrag vom 16. Aug 2010
 
Freiwilderer

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

Tabellenwertfunktion in MSSQL 2008

  Alt 15. Aug 2010, 14: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 14:58 Uhr) Grund: Code-Tag durch SQL-Tag ersetzt
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:10 Uhr.
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