أعتقد بعد العناء الطويل استطعت الحصول على هذه الإجرائية والطلب هو :
- توليد تقرير بالمبيعات اليومية. والتي يمكن استقائها من الجدولين Orders, Order Details، ويأخذ هذا الإجراء معامل وحيد هو تاريخ اليوم المراد إصدار التقرير عنه.
-
- توليد تقرير شهري بأكثر المواد مبيعاً. يمكن الحصول على هذه المعلومات من خلال مقاطعة معلومات الجدول Products مع الجدول Order Details الذي يبين كمية المبيعات.
حل الطلب الأول :
USE [Northwind]
GO
/****** Object: StoredProcedure [dbo].[day_report] Script Date: 17/6/2014 10:43:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[day_report]
@OrderID int ,
@CustomerID nvarchar(5) ,
@EmployeeID int ,
@OrderDate datetime ,
@RequiredDate datetime ,
@ShippedDate datetime ,
@ShipVia int,
@Freight money ,
@ShipName nvarchar(40) ,
@ShipAddress nvarchar(60) ,
@ShipCity nvarchar(15) ,
@ShipRegion nvarchar(15) ,
@ShipPostalCode nvarchar(10) ,
@ShipCountry nvarchar(15) ,
@ProductID int ,
@UnitPrice money ,
@Quantity smallint,
@Discount real
AS
BEGIN
SET NOCOUNT ON
SELECT Orders.*,
[Order Details].UnitPrice,
[Order Details].Quantity,
[Order Details].Discount
FROM [Order Details]
INNER JOIN
Orders ON [Order Details].OrderID = Orders.OrderID
order by Orders.OrderDate
END
DECLARE @return_value int
EXEC @return_value = [dbo].[day_report]
@OrderID = N'Daily Report',
@CustomerID = 0,
@EmployeeID = 0,
@OrderDate = N'2014-1-1',
@RequiredDate = N'2014-1-1',
@ShippedDate = N'2014-1-1' ,
@ShipVia = 0 ,
@Freight = 0,
@ShipName = 0,
@ShipAddress = 0,
@ShipCity = 0 ,
@ShipRegion = 0 ,
@ShipPostalCode = 0 ,
@ShipCountry = 0 ,
@ProductID =0 ,
@UnitPrice =0,
@Quantity=0,
@Discount=0
Declare @RC int
Execute @RC = dbo.day_report
'My Order',0,0,N'2014-1-1',N'2014-1-1',N'2014-1-1',0,0,0,0,0,0,0,0,0,0,0,0 ;
حل الطلب الثاني:
USE [Northwind]
GO
/****** Object: StoredProcedure [dbo].[month_report] Script Date: 17/6/2014 10:43:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[month_report]
@OrderID int ,
@ProductID int,
@Quantity smallint,
@Discount real,
@ProductName nvarchar(40) ,
@SupplierID int,
@CategoryID int,
@QuantityPerUnit nvarchar(20) ,
@UnitPrice money,
@UnitsInStock smallint,
@UnitsOnOrder smallint,
@ReorderLevel smallint,
@Discontinued bit
AS
BEGIN
SET NOCOUNT ON
SELECT Products.ProductName,
Products.ProductID,
Products.SupplierID,
Products.CategoryID,
Products.QuantityPerUnit,
Products.UnitPrice,
Products.UnitsOnOrder,
Products.UnitsInStock,
Products.Discontinued,
Products.ReorderLevel,
[Order Details].OrderID,
[Order Details].UnitPrice
AS
Expr1, [Order Details].Quantity,
[Order Details].Discount
FROM [Order Details] INNER JOIN
Products ON [Order Details].ProductID = Products.ProductID
ORDER BY Products.ProductName
END
DECLARE @return_value int
EXEC @OrderID = 'Month',
@ProductID = 0 ,
@Quantity = 0 ,
@Discount = 0 ,
@ProductName = 0 ,
@SupplierID = 0 ,
@CategoryID = 0 ,
@QuantityPerUnit = 0 ,
@UnitPrice = 0 ,
@UnitsInStock = 0 ,
@UnitsOnOrder= 0 ,
@ReorderLevel = 0 ,
@Discontinued = 0
Declare @RC int
Execute @RC = dbo.month_report
'Month',0,0,0,0,0,0,0,0,0,0,0,0;
أرجو المساعدة وشكرا