Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

SQL Server und Tabellenvariable

Empfohlene Antworten

Veröffentlicht

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.

Leider kriege ich Fehler :

Die Variable '@table' muss deklariert werden.

Wieso Fehler? ;)

Eine Variable muss doch auch deklariert werden.

Wie schaut deine Deklaration von @table denn aus?

Goos

  • Autor

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]


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 :)

  • Autor

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 ;)

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

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.