Announcement

Collapse
No announcement yet.

Funktion wie "CallByName" gesucht

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Funktion wie "CallByName" gesucht

    Hallo,

    ich habe eine View mit Spalten wie "SummeMonat1, SummeMonat2, SummeMonat[n]"

    Jetzt möchte ich mir eine Skalarwertfunktion schreiben, die je nach übergebenem Parameter die ersten n Monate eines Jahres zusammenzählt. Problem an der Sache ist, eine Schleife wie

    Code:
    while(@aktuellerMonat <= @endmonat)
    begin
      @saldo = @saldo + Select SummeMonat ' + @AktuellerMonat ... from...
      @aktuellerMonat = @aktuellerMonat +1
      ...
    end
    ...
    return @saldo
    ist nicht möglich, da ich den String für die Spaltenbezeichnung nicht "zusammenbauen" kann. Ich suche also eine Funktion, die mir ein Object / Spalte zurückgibt wenn ich deren Name übergebe.

    Gibt es sowas? Wenn ja, wie kann ich das am Besten anstellen?

    Vielen Dank schonmal

  • #2
    Ist möglich mit dynamischem SQL, etwa so:

    declare @sql nvarchar(400), @sum float
    ...
    while(@aktuellerMonat <= @endmonat)
    begin
    select @sql = N'select SummeMonat ' + cast(@AktuellerMonat as nvarchar) + ' from myView'
    EXEC sp_executesql @sql, N'@sum float OUTPUT', @sum OUTPUT
    set @saldo = @saldo + @sum
    set @aktuellerMonat = @aktuellerMonat +1
    end
    ...
    return @saldo


    Aufpassen: @sql als NVARCHAR definieren, nicht einfach nur varchar! Und bei den Strings dann generell Unicode verwenden, daher immer das 'N' am Anfang.
    Am besten einfach mal nach sp_executesql googeln, da findet man genug Info dazu.

    bye,
    Helmut

    Comment

    Working...
    X