Kuidas teha SELECT * INTO [temp tabel] FROM [salvestatud protseduur]? Mitte
FROM [tabelist]ja ilma
[ajutise tabeli]` määratlemata?
Select
kõik andmed BusinessLine
st tmpBusLine
i toimivad hästi.
select *
into tmpBusLine
from BusinessLine
Ma proovin sama, aga kasutades stored procedure
, mis tagastab andmeid, ei ole päris sama.
select *
into tmpBusLine
from
exec getBusinessLineHistory '16 Mar 2009'
Tulemissõnum:
Msg 156, tase 15, olek 1, rida 2 Vale süntaks võtmesõna lähedal 'exec'.
Olen lugenud mitmeid näiteid ajutise tabeli loomisest, millel on sama struktuur kui väljund salvestatud protseduuril, mis töötab hästi, kuid oleks tore, kui ei saaks esitada ühtegi veergu.
SQL Server 2005-s saate kasutada INSERT INTO ... EXEC
, et sisestada salvestatud protseduuri tulemus tabelisse. MSDN'i INSERT
dokumentatsioonist (tegelikult SQL Server 2000 jaoks):
--INSERT...EXECUTE procedure example
INSERT author_sales EXECUTE get_author_sales
Kui salvestatud protseduur tagastab palju veerge ja te ei soovi käsitsi "luua" ajutist tabelit, et hoida tulemust, ma'olen leidnud, et kõige lihtsam viis on minna salvestatud protseduurile ja lisada "into" klausel viimasele select-avaldusele ja lisada 1=0 where-klauslile.
Käivitage salvestatud protseduur üks kord ning minge tagasi ja eemaldage äsja lisatud SQL-kood. Nüüd on teil tühi tabel, mis vastab salvestatud protseduuri tulemusele. Sa võid kas "script table as create" ajutise tabeli jaoks või lihtsalt sisestada otse sellesse tabelisse.