bigpoint Geschrieben 19. Juli 2004 Teilen Geschrieben 19. Juli 2004 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goos Geschrieben 19. Juli 2004 Teilen Geschrieben 19. Juli 2004 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigpoint Geschrieben 19. Juli 2004 Autor Teilen Geschrieben 19. Juli 2004 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] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goos Geschrieben 19. Juli 2004 Teilen Geschrieben 19. Juli 2004 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigpoint Geschrieben 20. Juli 2004 Autor Teilen Geschrieben 20. Juli 2004 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goos Geschrieben 20. Juli 2004 Teilen Geschrieben 20. Juli 2004 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigpoint Geschrieben 21. Juli 2004 Autor Teilen Geschrieben 21. Juli 2004 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] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goos Geschrieben 21. Juli 2004 Teilen Geschrieben 21. Juli 2004 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.