【发布时间】:2015-06-25 06:55:50
【问题描述】:
我需要将创建视图和存储过程放在一个 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;
【问题讨论】:
-
为什么要在存储过程中创建视图?您应该设计一个提供预期输出的程序或只是一个视图。这种组合对我来说毫无意义(或者我们需要更多信息吗?)
-
我想这是非常奇怪的方法。你真的需要在存储过程中创建视图吗?每次运行此 sp 时,您的过程都会尝试创建一个视图,因此第一次它可以成功,但之后每次肯定都会失败。那么为什么需要这个程序呢?
-
doesn't work- 详细说明。它对我有用... -
我的最终结果是在我运行存储过程时打印出前 10 个产品,有什么更好的方法呢?
-
您不需要视图来执行此操作。只需直接在 soretd 过程中使用相同的代码即可。
标签: sql-server stored-procedures sql-server-2012