Miten teen SELECT * INTO [väliaikainen taulukko] FROM [tallennettu menettely]
? Ei FROM [taulukko]
ja määrittelemättä [väliaikaista taulukkoa]
?
Select
kaikki tiedot BusinessLine
:sta tmpBusLine
:iin toimii hyvin.
select *
into tmpBusLine
from BusinessLine
Yritän samaa, mutta stored procedure
, joka palauttaa tietoja, ei ole aivan sama.
select *
into tmpBusLine
from
exec getBusinessLineHistory '16 Mar 2009'
Tulostusviesti:
Msg 156, taso 15, tila 1, rivi 2 Virheellinen syntaksi avainsanan lähellä 'exec'.
Olen lukenut useita esimerkkejä väliaikaisen taulukon luomisesta, jolla on sama rakenne kuin ulostulossa olevalla tallennetulla proseduurilla, mikä toimii hyvin, mutta olisi mukavaa olla toimittamatta sarakkeita.
SQL Server 2005:ssä voit käyttää INSERT INTO ... EXEC
lisätäksesi tallennetun proseduurin tuloksen taulukkoon. MSDN'n INSERT
-asiakirjoista (itse asiassa SQL Server 2000:lle):
--INSERT...EXECUTE procedure example
INSERT author_sales EXECUTE get_author_sales
Kun tallennettu proseduuri palauttaa paljon sarakkeita etkä halua manuaalisesti "luoda" väliaikaista taulukkoa tuloksen säilyttämiseksi, olen havainnut, että helpoin tapa on mennä tallennettuun proseduuriin ja lisätä "into" -lauseke viimeiseen select-lauseeseen ja lisätä 1=0 where-lausekkeeseen.
Suorita tallennettu proseduuri kerran, palaa takaisin ja poista juuri lisäämäsi SQL-koodi. Nyt sinulla on tyhjä taulukko, joka vastaa tallennetun proseduurin tulosta. Voit joko "script table as create" tilapäisen taulukon tai yksinkertaisesti lisätä suoraan kyseiseen taulukkoon.