INSERT INTO table1 exec sp_GetProducts @CategoryID=12Stored procedures that returns tabular results in SQL Server do not allow saving the results in a new table like we would expect (The receiving table must exist with all columns' data types and fields names ahead of time for the query to work).
The workaround is to use either OpenRowset or by creating a new function.
sp_configure 'Show Advanced Options', 1 GO RECONFIGURE GO sp_configure 'Ad Hoc Distributed Queries', 1 GO RECONFIGURE GO SELECT * INTO table1 FROM OPENROWSET ( 'sqlncli', 'server=(local)\SQL12;trusted_connection=yes', 'exec Northwind.dbo.sp_GetProducts @CategoryID=12' );
When using a user-defined function instead, we are basically re-writing the stored procedure in user-defined function.
CREATE FUNCTION GetProductsByCategory
(
    @CategoryID int
)
RETURNS TABLE
AS
    RETURN
        select * from dbo.Products where CategoryID=@CategoryID
GO
SELECT *
INTO table1
FROM GetProductsByCategory(12);
GO
 
 
No comments:
Post a Comment