Showing posts with label Mọi Thứ Về Stored Procedure. Show all posts
Showing posts with label Mọi Thứ Về Stored Procedure. Show all posts

Tuesday, January 27, 2015

Các tham số của Stored Procedure .

-- Stored procedure definition with input/output parameters - QUICK SYNTAX
USE AdventureWorks2008;
GO
CREATE PROCEDURE sprocSalesByQuarter
                @StartYear  INT,
                @TotalSales MONEY  OUTPUT
AS
  BEGIN -- sproc definition 
    SET NOCOUNT  ON -- turn off rows affected messages
    
    SELECT @TotalSales = SUM(SubTotal)
    FROM   Sales.SalesOrderHeader
    WHERE  OrderDate >= DATEADD(YY,@StartYear-1900,'19000101')
    
    SELECT   YEAR = YEAR(OrderDate),
             COALESCE(CONVERT(VARCHAR,SUM(CASE
                      WHEN DATEPART(QQ,OrderDate) = 1 THEN SubTotal
                                          END),1),'') AS 'Q1',
             COALESCE(CONVERT(VARCHAR,SUM(CASE
                      WHEN DATEPART(QQ,OrderDate) = 2 THEN SubTotal
                                          END),1),'') AS 'Q2',
             COALESCE(CONVERT(VARCHAR,SUM(CASE
                      WHEN DATEPART(QQ,OrderDate) = 3 THEN SubTotal
                                          END),1),'') AS 'Q3',
             COALESCE(CONVERT(VARCHAR,SUM(CASE
                      WHEN DATEPART(QQ,OrderDate) = 4 THEN SubTotal
                                          END),1),'') AS 'Q4'
    FROM     Sales.SalesOrderHeader soh
    WHERE    OrderDate >= DATEADD(YY,@StartYear-1900,'19000101')
    GROUP BY YEAR(OrderDate)
    ORDER BY YEAR(OrderDate);
    RETURN @@ROWCOUNT;
  END -- sproc definition
GO
-- Execute stored procedure with INPUT/OUTPUT parameters
DECLARE @TotSales money
EXEC sprocSalesByQuarter 2003, @TotSales OUTPUT
/* YEAR     Q1          Q2                Q3                Q4
2003  6,679,873.80      8,357,874.88      13,681,907.05     13,291,381.43
2004  11,398,376.28     14,379,545.19     50,840.63   */
SELECT 'Total Sales since 2003'=@TotSales
/* Total Sales since 2003
      67839799.2669  */
------------
-- T-SQL Stored Procedure with single input parameter - Basic Syntax
USE AdventureWorks2008;
GO
CREATE PROCEDURE uspProductByColor @pColor VARCHAR(32)
AS
  BEGIN
    SET nocount  ON
    IF @pColor IS NULL
      SELECT   Productid,
               ProductName = Name,
               Productnumber,
               ListPrice,
               Color
      FROM     Production.Product
      ORDER BY Color, Name
    ELSE
      SELECT   Productid,
               ProductName = Name,
               ProductNumber,
               ListPrice,
               Color
      FROM     Production.Product
      WHERE    Color = @pColor
      ORDER BY Color, Name
  END
GO

-- T-SQL execute stored procedure
EXEC uspProductByColor  'Yellow'
/* ProductID      Name                   ProductNumber 
797               Road-550-W Yellow, 38  BK-R64Y-38 
798               Road-550-W Yellow, 40  BK-R64Y-40 
799               Road-550-W Yellow, 42  BK-R64Y-42 
.... 
*/
------------ 
-- SQL stored procedure parameters
-- SQL stored procedure parameters default values - SQL Server stored procedure parameters
USE AdventureWorks;
GO

CREATE PROCEDURE uspVendorsByLocation
                @City    VARCHAR(30)  = NULL,
                @State   VARCHAR(30)  = NULL,
                @Country VARCHAR(50)  = NULL
AS
  BEGIN
    SELECT   V.VendorID,
             V.Name  AS Vendor,
             A.City,
             SP.Name AS State,
             CR.Name AS Country
    FROM     Purchasing.Vendor AS V
             JOIN Purchasing.VendorAddress AS VA
               ON VA.VendorID = V.VendorID
             JOIN Person.Address AS A
               ON A.AddressID = VA.AddressID
             JOIN Person.StateProvince AS SP
               ON SP.StateProvinceID = A.StateProvinceID
             JOIN Person.CountryRegion AS CR
               ON CR.CountryRegionCode = SP.CountryRegionCode
    WHERE    (A.City = @City
               OR @City IS NULL)
             AND (SP.Name = @State
                   OR @State IS NULL)
             AND (CR.Name = @Country
                   OR @Country IS NULL)
    ORDER BY Country,
             State,
             City,
             Vendor
  END

GO

-- Execute stored procedure by supplying all parameters
EXEC uspVendorsByLocation 'Los Angeles','California','United States'
-- Select from stored procedure
-- SQL Server openquery
SELECT * FROM OPENQUERY (DELLSTAR,
'EXEC AdventureWorks.dbo.uspVendorsByLocation ''Los Angeles'',
''California'',''United States''')
/*
VendorID    Vendor                  City        State       Country
27          Capital Road Cycles     Los Angeles California  United States
4           Comfort Road Bicycles   Los Angeles California  United States*/
*/

-- Execute stored procedure
-- Full list - no filtering
EXEC uspVendorsByLocation
SELECT * FROM OPENQUERY (DELLSTAR,
'EXEC AdventureWorks.dbo.uspVendorsByLocation')

-- (104 row(s) affected)
/* Partial results
VendorID    Vendor                        City        State       Country
88          Greenwood Athletic Company    Lemon Grove Arizona     United States
100         Holiday Skate & Cycle         Lemon Grove Arizona     United States
97          Northwind Traders             Phoenix     Arizona     United States
38          Allenson Cycles               Altadena    California  United States
48          Gardner Touring Cycles        Altadena    California  United States
*/

-- Execute stored procedure by supplying the City parameter
EXEC uspVendorsByLocation 'Berkeley'
EXEC uspVendorsByLocation Berkeley
SELECT * FROM OPENQUERY (DELLSTAR,
'EXEC AdventureWorks.dbo.uspVendorsByLocation ''Berkeley''')

/*
VendorID    Vendor                  City        State       Country
76          Cruger Bike Company     Berkeley    California  United States
98          Trikes, Inc.            Berkeley    California  United States
*/

-- Execute stored procedure by supplying the State parameter
EXEC uspVendorsByLocation NULL,'California'
SELECT * FROM OPENQUERY (DELLSTAR,
'EXEC AdventureWorks.dbo.uspVendorsByLocation NULL,''California''')

-- (39 row(s) affected)

-- Execute stored procedure by supplying the Country parameter
EXEC uspVendorsByLocation NULL,NULL,'United States'
SELECT * FROM OPENQUERY (DELLSTAR,
'EXEC AdventureWorks.dbo.uspVendorsByLocation NULL,NULL,''United States''')

-- (104 row(s) affected) -- entire set i.e. all vendors are U.S. based
------------ 

Source : sqlusa

Thực thi SELECT với Stored Procedure .

-- SQL select from stored procedure - openquery stored procedure
-- For local server the DATA ACCESS server option must be turned on (see below)
SELECT * FROM OPENQUERY ([DELLSTAR\SQL2008],
'EXECUTE [AdventureWorks2008].[dbo].[uspGetBillOfMaterials]   800, ''2004-01-01''')
/* Partial results

ProductAssemblyID ComponentID       ComponentDesc
800               518               ML Road Seat Assembly
800               806               ML Headset
800               812               ML Road Handlebars
*/
------------
-- OPENQUERY usage within stored procedure - dynamic SQL execution
------------
CREATE PROC uspGetBOM @ProductID int, @Date date
AS
BEGIN
  DECLARE @SQL nvarchar(max)=
  'SELECT *
  INTO   BOM
  FROM   OPENQUERY(localhost,'' EXECUTE
         [AdventureWorks].[dbo].[uspGetBillOfMaterials] '+
                           convert(varchar,@ProductID)+
                           ','''''+convert(varchar,@Date)+''''''')'
  PRINT @SQL
  EXEC sp_executeSQL @SQL
END
GO
EXEC uspGetBOM 900, '2004-03-15'
GO
SELECT * FROM BOM     -- Permanent or global temporary table scoped beyond the sproc
DROP TABLE BOM
------------
------------
-- SQL stored procedure basic syntax - creating t sql stored procedures
------------
USE AdventureWorks2008;
GO
CREATE PROCEDURE sprocSalesByQuarter
AS
BEGIN -- sproc definition
SET NOCOUNT ON -- turn off rows affected messages
SELECT YEAR = YEAR(OrderDate),
       COALESCE(CONVERT(VARCHAR,SUM(CASE
                        WHEN DATEPART(QQ,OrderDate) = 1 THEN SubTotal
                                    END),1),'') AS 'Q1',
       COALESCE(CONVERT(VARCHAR,SUM(CASE
                        WHEN DATEPART(QQ, OrderDate) = 2 THEN SubTotal
                                    END),1),'') AS 'Q2',
       COALESCE(CONVERT(VARCHAR,SUM(CASE
                        WHEN DATEPART(QQ, OrderDate) = 3 THEN SubTotal
                                    END),1),'') AS 'Q3',
       COALESCE(CONVERT(VARCHAR,SUM(CASE
                        WHEN DATEPART(QQ, OrderDate) = 4 THEN SubTotal
                                    END),1),'') AS 'Q4'
FROM  Sales.SalesOrderHeader soh
GROUP BY YEAR(OrderDate) ORDER BY YEAR(OrderDate)
END -- sproc definition
GO
-- SQL test stored procedure with no parameters - sql execute stored procedure
-- SQL Server select from stored procedure results
SELECT * FROM OPENQUERY ([DELLSTAR\SQL2008],
'EXECUTE [AdventureWorks2008].[dbo].sprocSalesByQuarter')
GO
/*
YEAR  Q1                Q2                Q3                Q4
2001                                      5,294,961.92      7,671,148.64
2002  6,678,449.12      7,430,122.29      12,179,372.04     9,798,486.39
2003  7,738,309.35      9,727,845.55      16,488,806.73     15,192,201.07
2004  12,824,418.47     16,262,217.91     50,840.63  
*/
------------
-- Using localhost with OPENQUERY - One time only: add as linked server
EXEC master.dbo.sp_addlinkedserver @server = N'localhost',
                                   @srvproduct=N'SQL Server'
SELECT * INTO tempSpwho
FROM OPENQUERY(localhost,'exec sp_who')
SELECT * FROM tempSpwho
------------

-- WARNING: The OPENQUERY/OPENROWSET method has some restrictions
SELECT * INTO SPWHO2
FROM OPENQUERY(YOURSERVER,'exec sp_who2')
/* Msg 7357, Level 16, State 2, Line 1
Cannot process the object "exec sp_who2". The OLE DB provider "SQLNCLI10"
for linked server "YOURSERVER" indicates that either the object has no columns
or the current user does not have permissions on that object. */
------------
------------
-- Transferring multiple result sets into a table
------------
-- Transfer stored procedure results into a flat file
-- SQLCMD export query results into text file
EXECUTE MASTER.dbo.xp_cmdshell
'SQLCMD -SDELLSTAR\SQL2008 -E -Q"execute AdventureWorks2008.dbo.sp_spaceused"
-o"C:\data\export\spaceused.txt" -s"" '
 , no_output

-- Upload content of flat file into temp table using free format
CREATE TABLE #Buffer ( Line VARCHAR(256))
-- SQL insert into execute - sql execute string
INSERT INTO #Buffer
EXECUTE MASTER.dbo.xp_cmdshell 'type "C:\data\export\spaceused.txt"'
DELETE FROM #Buffer WHERE Line is NULL

SELECT Line FROM   #Buffer
/*
Line
database_name              database_size     unallocated space
-------------------------------------------------------------------
AdventureWorks2008          213.50 MB         4.22 MB          
reserved          data              index_size        unused           
-------------------------------------------------------------------
195872 KB         106616 KB         82592 KB          6664 KB          
*/

-- Cleanup
DROP TABLE #Buffer
EXECUTE MASTER.dbo.xp_cmdshell 'DEL "C:\data\export\spaceused.txt"', no_output
------------

-- SQL insert exec for data sharing between stored procedures - SELECT from results table
CREATE TABLE #BillOfMaterials (
  ProductAssemblyID INT,
  ComponentID       INT,
  ComponentDesc     NVARCHAR(50),
  TotalQuantity     NUMERIC(38,2),
  StandardCost      MONEY,
  ListPrice         MONEY,
  BOMLevel          SMALLINT,
  RecursionLevel    INT);
INSERT #BillOfMaterials
EXECUTE [AdventureWorks2008].[dbo].[uspGetBillOfMaterials]   800, '2004-01-01'
SELECT TOP(3) * FROM #BillOfMaterials ORDER BY NEWID()
/* Results
PAID CID ComponentDesc TotalQuantity StandardCost ListPrice BOMLevel RL
827 922 Road Tire Tube 1 1.4923 3.99 2 1
518 530 Seat Post 1 0 0 2 1
835 325 Decal 1 2 0 0 2 1

*/

DROP TABLE #BillOfMaterials
GO
-- SQL select into from stored procedure execution
SELECT * INTO #BOM FROM OPENQUERY ([DELLSTAR\SQL2008],
'EXECUTE [AdventureWorks2008].[dbo].[uspGetBillOfMaterials] 800, ''2004-01-01''')
SELECT RowsReturned=COUNT(*) FROM #BOM
-- 87
DROP TABLE #BOM
GO

The BEST 70-461 SQL Server 2012 Querying Exam Prep Book!
------------
-- Stored procedure with optional parameter list - SELECT from OPENQUERY
------------
-- MSSQL Server select from stored procedure results
USE AdventureWorks;
GO
-- SQL Server stored procedure create - T-SQL Select from sproc
CREATE PROCEDURE sprocVendorListByGeograpy
                @City    VARCHAR(30)  = NULL,
                @State   VARCHAR(30)  = NULL,
                @Country VARCHAR(50)  = NULL
AS
  BEGIN
    SELECT   V.VendorID,
             V.Name  AS Vendor,
             A.City,
             SP.Name AS State,
             CR.Name AS Country
    FROM     Purchasing.Vendor AS V
             JOIN Purchasing.VendorAddress AS VA
               ON VA.VendorID = V.VendorID
             JOIN Person.Address AS A
               ON A.AddressID = VA.AddressID
             JOIN Person.StateProvince AS SP
               ON SP.StateProvinceID = A.StateProvinceID
             JOIN Person.CountryRegion AS CR
               ON CR.CountryRegionCode = SP.CountryRegionCode
-- Stored procedure optional parameter filtering
-- Dynamic SQL can be avoided in some cases with WHERE filtering like below
    WHERE    (A.City = @City
               OR @City IS NULL)
             AND (SP.Name = @State
                   OR @State IS NULL)
             AND (CR.Name = @Country
                   OR @Country IS NULL)
    ORDER BY Country,
             State,
             City,
             Vendor
  END

GO

-- Execute stored procedure by supplying all parameters
-- For openquery, the single quotes must be doubled up
-- Select from stored procedure
EXEC sprocVendorListByGeograpy 'San Francisco','California','United States'
SELECT * FROM OPENQUERY (DELLSTAR,
'EXEC AdventureWorks.dbo.sprocVendorListByGeograpy ''San Francisco'',
''California'',''United States''')
/*
VendorID    Vendor            City              State       Country
42          Legend Cycles     San Francisco     California  United States
*/

-- Execute stored procedure
-- Full list - no filtering
-- SQL Server select from sproc
EXEC sprocVendorListByGeograpy
SELECT * FROM OPENQUERY (DELLSTAR,
'EXEC AdventureWorks.dbo.sprocVendorListByGeograpy')

-- (104 row(s) affected)
/* Partial results
VendorID    Vendor                        City        State       Country
88          Greenwood Athletic Company    Lemon Grove Arizona     United States
100         Holiday Skate & Cycle         Lemon Grove Arizona     United States
97          Northwind Traders             Phoenix     Arizona     United States
38          Allenson Cycles               Altadena    California  United States
48          Gardner Touring Cycles        Altadena    California  United States
*/

-- Execute stored procedure by supplying the City parameter
EXEC sprocVendorListByGeograpy 'Berkeley'
EXEC sprocVendorListByGeograpy Berkeley
SELECT * FROM OPENQUERY (DELLSTAR,
'EXEC AdventureWorks.dbo.sprocVendorListByGeograpy ''Berkeley''')

/*
VendorID    Vendor                  City        State       Country
76          Cruger Bike Company     Berkeley    California  United States
98          Trikes, Inc.            Berkeley    California  United States
*/

-- Execute stored procedure by supplying the State parameter
EXEC sprocVendorListByGeograpy NULL,'California'
SELECT * FROM OPENQUERY (DELLSTAR,
'EXEC AdventureWorks.dbo.sprocVendorListByGeograpy NULL,''California''')

-- (39 row(s) affected)

-- Execute stored procedure by supplying the Country parameter
EXEC sprocVendorListByGeograpy NULL,NULL,'United States'
SELECT * FROM OPENQUERY (DELLSTAR,
'EXEC AdventureWorks.dbo.sprocVendorListByGeograpy NULL,NULL,''United States''')

-- (104 row(s) affected) -- entire set i.e. all vendors are U.S. based
------------
-- Create temporary table with the output of stored procedure
-- Select into from stored procedure
-- Select from stored procedure
-- SRVOMEGA can be local server or linked server
SELECT *
INTO   #BOM800
FROM   OPENQUERY(SRVOMEGA,' EXECUTE [AdventureWorks].[dbo].[uspGetBillOfMaterials]
                            800   ,''2004-02-01''')
GO

SELECT   TOP ( 5 ) *
FROM     #BOM800
ORDER BY Newid()
GO

/* Partial results
ProductAssemblyID       ComponentID       ComponentDesc     TotalQuantity
329                     482               Metal Sheet 2     1.00
3                       2                 Bearing Ball      10.00
806                     323               Crown Race        1.00
532                     484               Metal Sheet 7     1.00
812                     398               Handlebar Tube    1.00
*/
DROP TABLE #BOM800
GO
------------  
------------
-- SQL finding stored procedure result columns meta data
------------
SELECT TOP 0 *
INTO tempdb.dbo.BOM
FROM OPENQUERY ([DELLSTAR\SQL2008],
'EXECUTE [AdventureWorks2008].[dbo].[uspGetBillOfMaterials]    800  ,''2004-02-01''')
-- (0 row(s) affected) empty table created in the results format of the sproc
GO
-- Script out table using Object Explorer
-- This is the output column format of the stored procedure
CREATE TABLE [dbo].[BOM](
      [ProductAssemblyID] [int] NULL,
      [ComponentID] [int] NULL,
      [ComponentDesc] [nvarchar](50) NULL,
      [TotalQuantity] [numeric](38, 2) NULL,
      [StandardCost] [money] NULL,
      [ListPrice] [money] NULL,
      [BOMLevel] [smallint] NULL,
      [RecursionLevel] [int] NULL
) ON [PRIMARY]
GO

-- INSERT - EXEC can be used due to the table matching the stored procedure
INSERT tempdb.dbo.BOM
EXECUTE [AdventureWorks2008].[dbo].[uspGetBillOfMaterials]    800  ,'2004-02-01'
-- (87 row(s) affected)
------------
------------
-- Stored procedure without parameters for reporting
------------
-- Select from stored procedure
-- Use INSERT...EXEC sproc statement to populate a (temporary) table
-- SQL create stored procedure
USE AdventureWorks;
GO
CREATE PROCEDURE sprocSalesByYear AS
SELECT
    SalesStaff,
    SalesTerritory,
    [YY2003]= '$'+CONVERT(varchar,[2003],1),
    [YY2004]= '$'+CONVERT(varchar,[2004],1)
FROM (SELECT
        soh.SalesPersonID
        ,c.FirstName + ' ' + COALESCE(c.MiddleName, '') + ' ' + c.LastName AS SalesStaff
        ,e.Title
        ,st.Name AS SalesTerritory
        ,soh.SubTotal
        ,YEAR(DATEADD(m, 6, soh.OrderDate)) AS FiscalYear
    FROM Sales.SalesPerson sp
        INNER JOIN Sales.SalesOrderHeader soh
        ON sp.SalesPersonID = soh.SalesPersonID
        INNER JOIN Sales.SalesTerritory st
        ON sp.TerritoryID = st.TerritoryID
        INNER JOIN HumanResources.Employee e
        ON soh.SalesPersonID = e.EmployeeID
        INNER JOIN Person.Contact c
        ON e.ContactID = c.ContactID
    ) AS soh
PIVOT
(
    SUM(SubTotal)
    FOR FiscalYear
    IN ( [2003], [2004])
) AS pvt
ORDER BY SalesStaff;

GO

-- Create a temporary or permanent table for results
-- Table structure must match sproc results structure
CREATE TABLE #SalesByYear (
SalesStaff nvarchar(50),
Territory nvarchar(35),
[2003] varchar(32),
[2004] varchar(32)
)
GO
-- SQL insert exec
INSERT #SalesByYear
EXEC sprocSalesByYear
GO

-- Check and use results from temporary table
SELECT * FROM #SalesByYear ORDER BY SalesStaff
GO

/* Partial results

SalesStaff              Territory         2003              2004
David R Campbell        Northwest         $1,377,431.33     $1,930,885.56
Garrett R Vargas        Canada            $1,480,136.01     $1,764,938.99
Jae B Pak               United Kingdom    $5,287,044.31     $5,015,682.38
Jillian  Carson         Central           $4,991,867.71     $3,857,163.63
*/

-- Cleanup
DROP TABLE #SalesByYear
GO
------------  

The BEST 70-461 SQL Server 2012 Querying Exam Prep Book!
USE AdventureWorks;

-- Getting table-like results from a system stored procedure
SELECT * FROM OPENROWSET ( 'SQLOLEDB','SERVER=.;Trusted_Connection=yes',
'SET FMTONLY OFF EXEC sp_who');
GO

-- Query results can be stored in a temporary table
SELECT * INTO #spwho
FROM OPENROWSET ( 'SQLOLEDB','SERVER=.;Trusted_Connection=yes',
'SET FMTONLY OFF EXEC sp_who');
GO

SELECT * FROM #spwho
GO

-- Getting table-like results from user stored procedure
SELECT * FROM OPENROWSET ( 'SQLOLEDB','SERVER=.;Trusted_Connection=yes',
'SET FMTONLY OFF EXEC AdventureWorks.dbo.uspGetBillOfMaterials 800, ''2004-02-01''');
GO


-- Table-like transformation can be used in a JOIN
SELECT p.* FROM Production.Product p
INNER JOIN OPENROWSET ( 'SQLOLEDB','SERVER=.;Trusted_Connection=yes',
'SET FMTONLY OFF EXEC AdventureWorks.dbo.uspGetBillOfMaterials 800, ''2004-02-01''') bom
on p.ProductID=bom.ComponentID
GO
------------
-- Select from system stored procedure- xp_readerrorlog external procedure
-- Create temporary table method - SQL create temporary table
DECLARE @Command nvarchar(128)
SET @Command = 'exec master.dbo.xp_readerrorlog'
CREATE TABLE #ERRORLOG (
            LogDate datetime,
            ProcessInfo varchar(64),
            [Text] NVARCHAR(max))

-- Populate table from sproc - insert exec stored procedure
INSERT #ERRORLOG
EXEC sp_executesql @Command

-- Select top 10 results only
SELECT TOP(10) * FROM #ERRORLOG ORDER BY LogDate
GO
/* Partial results

LogDate                 ProcessInfo       Text
2008-12-30 15:05:35.570 Server            Server process ID is 2180.
2008-12-30 15:05:35.570 Server            Authentication mode is MIXED.
*/
DROP TABLE #ERRORLOG
GO
------------

----------
-- SELECT from dynamic stored procedure execution INTO new table
----------
/* Data access must be turned on (1) for THIS local server (not linked server)

USE master
SELECT is_data_access_enabled  from sys.servers where name='SRVOMEGA'
EXEC sp_serveroption 'SRVOMEGA', 'data_access', 'on'

-- Alternate script
exec sp_serveroption @server = 'PRODSVR\SQL2008'
      ,@optname = 'DATA ACCESS'
      ,@optvalue = 'TRUE'
*/

----------
-- Dynamic stored procedure to temporary table
----------
USE tempdb;
GO

-- SQL create dynamic stored procedure
CREATE PROCEDURE SelectFromDynamicSrpoc
AS
  BEGIN
    DECLARE  @SQL NVARCHAR(MAX)
    SET @SQL = 'SELECT top (3) * from                
                AdventureWorks.Production.Product
                ORDER BY NEWID()'
    -- Dynamic SQL
    EXEC Sp_executesql    @SQL
  END
GO

-- Test stored procedure
EXEC tempdb.dbo.SelectFromDynamicSrpoc
GO

-- Select into temporary table from OPENQUERY stored procedure execution
-- SQL select into temp table
SELECT * INTO   #prod
FROM   Openquery(SRVOMEGA,'exec tempdb.dbo.SelectFromDynamicSrpoc')
GO

SELECT ProductID, ProductName=Name, ListPrice
FROM   #prod
/* Results

ProductID   ProductName                   ListPrice
949         LL Crankset                   175.49
680         HL Road Frame - Black, 58     1431.50
358         HL Grip Tape                  0.00
*/
GO

-- Cleanup
DROP PROCEDURE SelectFromDynamicSrpoc
DROP TABLE #prod
GO

----------

----------
-- Find where ProductID=3 is being used and store results in table
----------
-- SQL select into table create from sproc
-- T-SQL dynamic SQL OPENQUERY - MSSQL QUOTENAME - SERVERNAME dynamic
DECLARE @DynamicSQL nvarchar(max) =
      'SELECT *
       INTO   PartsUsage
       FROM   OPENQUERY(' + QUOTENAME(CONVERT(sysname, @@SERVERNAME))+ ',
                ''EXECUTE [AdventureWorks2008].[dbo].[uspGetWhereUsedProductID]  3,
            ''''2003-12-01'''''')'
PRINT @DynamicSQL
/*
SELECT *
       INTO   PartsUsage
       FROM   OPENQUERY([PRODSVR\SQL2008],
                'EXECUTE [AdventureWorks2008].[dbo].[uspGetWhereUsedProductID]  3,
            ''2003-12-01''')
*/EXEC sp_executeSQL @DynamicSQL

SELECT   TOP ( 5 ) *
FROM    PartsUsage
ORDER BY NEWID()
GO

/* Partial results

ProductAssemblyID ComponentID       ComponentDesc
769               994               Road-650 Black, 48
775               996               Mountain-100 Black, 38
787               995               Mountain-300 Black, 44
768               994               Road-650 Black, 44
757               995               Road-450 Red, 48
*/
-- Cleanup
DROP TABLE PartsUsage
GO
---------- 

Source : sqlusa