Mam złożone zapytanie SELECT, z którego chciałbym wstawić wszystkie wiersze do zmiennej tabeli, ale T-SQL na to nie pozwala.WYBIERZ DO zmiennej tabeli w T-SQL
W tych samych wierszach nie można używać zmiennej tabeli z zapytaniami SELECT INTO lub INSERT EXEC. http://odetocode.com/Articles/365.aspx
Krótki przykład:
declare @userData TABLE(
name varchar(30) NOT NULL,
oldlocation varchar(30) NOT NULL
)
SELECT name, location
INTO @userData
FROM myTable
INNER JOIN otherTable ON ...
WHERE age > 30
Dane w tabeli zmiennej będzie później wykorzystane w celu dodania/aktualizowania go z powrotem do różnych tabel (głównie kopii tych samych danych z drobnych aktualizacji). Celem tego jest po prostu uczynienie skryptu bardziej czytelnym i łatwiejszym do dostosowania niż bezpośrednio w odpowiednich tabelach. Wydajność nie jest problemem, ponieważ rowcount
jest dość mała i jest uruchamiana tylko ręcznie w razie potrzeby.
... lub po prostu powiedz mi, czy robię to wszystko źle.
Jeśli "SELECT name, location from myTable" jako wartości wstawiane do tabeli UserData nie ma znaczenia, czy nazwy zmiennych w wyborze odpowiadają nazwom w definicji tabeli. Wybierasz "name", aby wejść do "nazwy" zmiennej UserData, ale wybierasz "location" i jakoś przypisujesz ją do zmiennej "oldlocation" UserData. Czy SQL po prostu zmapuje je automatycznie, czy też rzuci jakiś wyjątek? –
Nie ma znaczenia nazwa, tylko typ kolumny. – CristiC
Wow, że ma to sens, ale jednocześnie parser we mnie czuje się trochę urażony :) –