尝试在过程中使用部分日期时间作为变量,因此参数将是像“六月”这样的月份。这是我写的
/* 3. 创建一个名为 sp_product_listing 的存储过程,列出在指定月份和年份订购的指定产品。产品和月份和年份将作为存储过程的输入参数。显示产品表中的产品名称、单价和库存数量,以及供应商表中的供应商名称。运行显示包含 Jack 的产品名称的存储过程,订单日期的月份是六月,年份是 2001。存储过程应该产生下面列出的结果集。*/
CREATE PROCEDURE sp_product_listing
(
@product varchar(40),
@month datetime,
@year datetime
)
AS
SELECT
'product_name'=products.name,
'unit_price'=products.unit_price,
'quantity_in_stock'=products.quantity_in_stock,
'supplier_name'=suppliers.name
FROM
products
INNER JOIN suppliers ON suppliers.supplier_id=products.supplier_id
INNER JOIN order_details ON order_details.product_id=products.product_id
INNER JOIN orders ON orders.order_id=order_details.order_id
WHERE
products.name LIKE '%@product%' AND MONTH(orders.order_date) = @month AND YEAR(orders.order_date) = @year;
GO
/*Execute procedure*/
EXECUTE sp_product_listing 'Jack','June','2001'
在我添加变量之前,程序测试工作正常,然后它转到 H 试图将 varchar 转换为日期时间?
我已经尝试过@month MONTH(datetime)等。不知道如何解决这个问题?也许这甚至不是问题?