Zum Inhalt springen

SQL Server und Tabellenvariable


bigpoint

Empfohlene Beiträge

Hallo zusammen,

ich benutze eine Lokale Variable table wo ich par Daten rein klopfe.

Jetzt will ich die Tabellenvariable updaten etwa so:


UPDATE @table
SET spalte=t.spalte
FROM (Select tp.spalte
from .....) as t
WHERE
@table.spalte=t.spalte
[/PHP]

Leider kriege ich Fehler :

Die Variable '@table' muss deklariert werden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Eine Variable muss doch auch deklariert werden.

Goos

das ist auch klar ;)

Wie schaut deine Deklaration von @table denn aus?

Goos


declare @table table(die spalten )
[/php]

wenn ich schreibe

[php]
UPDATE @table
SET spalte=1

is alles ok, sobald ich aber es so schreibe


UPDATE @table
SET spalte=t.spalte
FROM (Select tp.spalte
from .....) as t
WHERE
@table.spalte=t.spalte -- kent er hier nicht die variable @table und wenn ich
-- normale temporeretabelle benutze dann geht es ;(
[/php]

Link zu diesem Kommentar
Auf anderen Seiten teilen


UPDATE @table
SET spalte=t.spalte
FROM (Select tp.spalte
from .....) as t
WHERE
@table.spalte=t.spalte -- kent er hier nicht die variable @table und wenn ich
-- normale temporeretabelle benutze dann geht es ;(
[/php]

Du sagst da vom Prinzip her "SET spalte=t.spalte WHERE spalte=t.spalte"

Den Sinn dahinter versteh ich nicht recht, aber soweit ich weiss kannst die Variable halt in deinem Update nicht einfach so verwenden.

Wenn du allerdings aus deinem @table.spalte nur spalte machst, dann sollte das ansich funktionieren und auch die passende Spalte ansprechen.

Goos

Klaer mich bitte auf, falls ich irgendwo etwas falsch verstanden haben sollte :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also, ich mache von Prinzip so:

SET spalte=t.spalte WHERE spalte1=t.spalte1

Mein Problem ist, dass ich zwischen set und where noch eine unterabfrage benutzen muss wo ich eine Tabelle mit die update Tabelle ( in diesem Fall Tabellenvariable ) joinen muss, sobald ich es mache kennt er die Tabellenvariable nicht in der unterabfrage, also ich muss im quasi in der unterabfrage noch mal die Tabellenvariable bekannt machen ;(

Ich hoffe, dass ich mich deutlich ausgedruckt habe ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich hoffe, dass ich mich deutlich ausgedruckt habe ;)

Na sag das doch gleich so :D

Dazu musst eben deine Table Variable bekannt machen, wie du schon richtig gesagt hast.

Funktionieren tut das in etwa so:

...FROM    (Select tp.spalte
from .....) as t, @table as p
WHERE p.spalte=t.spalte[/PHP]

Goos

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok , noch was,

ich inserte in die @table und dann will ich auf die Tabelle PK setzen, so geht es leider nicht ;(


ALTER TABLE @table ADD PRIMARY KEY (....)
[/PHP]

Das mit dem "dann" geht so leider nicht. Tabellenvariablen sind was ihre Struktur angeht statisch. Du kannst also bei der Definition problemlos einen Primary Key setzen, aber nicht spaeter irgendwann.

Wenn es gar nicht anders gehen sollte, dann musst du halt doch auf ne Temp-Table zurueckgreifen. Die Performance Einbussen in dem Fall sind in den meisten Faellen auch nicht soooo gross (kommt natuerlich auf den konkreten Fall an).

Goos

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...