datetime の一部をプロシージャ内の変数として使用しようとしているため、パラメーターは「6 月」のような月になります。これが私が書いたものです
/* 3. sp_product_listing というストアド プロシージャを作成し、指定された月と年に注文された指定された製品を一覧表示します。製品と月と年は、ストアド プロシージャの入力パラメーターになります。商品表から商品名、単価、在庫数、仕入先表から仕入先名を表示します。Jack を含む製品名、注文日の月が 6 月、年が 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 を datetime に変換しようとしていますか?
@month MONTH(datetime) などを試しましたが、これにアプローチする方法がわかりませんか? 多分それは問題でさえありませんか?