2015-06-25 78 views
1

我需要將創建視圖和存儲過程放在一個sql文件中。另一個文件只是執行存儲過程。我試過下面的方法,但它不起作用。我怎樣才能做到這一點?在存儲過程中創建一個文件中的視圖

一號文件:

CREATE PROCEDURE usp_top10Products 
AS 

exec ('CREATE VIEW vw_top10Products as 
    SELECT Top 10 p.productID, p.productName as Product_Name, inv.quantitySold as Quantity_Sold, 
      (inv.sellingPrice - inv.costPrice)*inv.quantitySold as Profit 
    FROM Product p JOIN 
     Inventory inv 
     ON p.productID = inv.productID 
    ORDER BY Profit Desc') 

BEGIN 
select * 
from vw_top10Products; 
END 
GO 

第二個文件:

EXECUTE usp_top10Products; 
+1

?你應該設計一個給你預期輸出或者只是一個視圖的程序。這個組合對我來說沒有意義(或者我們需要更多的信息嗎?) – CeOnSql

+2

我想是非常奇怪的方法。你真的需要在存儲過程中創建一個視圖嗎?你的程序會在你每次運行這個sp時嘗試創建一個視圖,所以第一次它可以成功,但每次都會失敗。那麼爲什麼需要這個程序呢? –

+1

'不工作' - 詳細說明。它適用於我... –

回答

0

避免創建存儲過程的視圖。如果你只需要打印出您的SELECT你只需要你爲什麼要創建存儲過程的觀點做SELECT

CREATE PROCEDURE usp_top10Products 
    AS 

     SELECT Top 10 p.productID, p.productName as Product_Name, inv.quantitySold as Quantity_Sold, 
        (inv.sellingPrice - inv.costPrice)*inv.quantitySold as Profit 
     FROM Product p JOIN 
       Inventory inv 
       ON p.productID = inv.productID 
     ORDER BY Profit Desc 

     GO 
+0

請注意! ;) – Galma88