Veröffentlicht 19. Juli 200421 j 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.
19. Juli 200421 j 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
19. Juli 200421 j 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]
19. Juli 200421 j 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
20. Juli 200421 j 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
20. Juli 200421 j Ich hoffe, dass ich mich deutlich ausgedruckt habe Na sag das doch gleich so 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
21. Juli 200421 j Autor 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]
21. Juli 200421 j 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.