0

特定の月と年を入力境界として使用してストアド プロシージャを作成する際に問題が発生しています。

sp_products特定の月と年に注文された特定の製品をリストするというストアド プロシージャを作成する必要があります。製品名、月、および年は、ストアド プロシージャの入力パラメーターになります。表から商品名、単価、在庫数を、Products表から仕入先名を表示しSuppliersます。次のクエリを使用してストアド プロシージャをテストし、以下に示す結果セットを生成します。

EXEC sp_products '%tofu%', 'December', 1992

ProductName UnitPrice UnitsInStock Name
------------------------------ -------------- --------------- -----------------------------------

これは、正常に実行されたクエリを記述したコードです。

しかし、私が実行したとき

EXEC sp_products '%tofu%', 'December', 1992 

エラー メッセージが表示されます。

CREATE PROCEDURE sp_products
   (@product VARCHAR(40),
@month DATETIME = 'December',
@year DATETIME = 1992
   ) 
AS
   SELECT             
      P.ProductName, P.UnitPrice, P.UnitsInStock,
      S.Name
   FROM 
      Products P
   INNER JOIN 
      Suppliers S ON P.SupplierID = S.SupplierID 
   WHERE 
      P.SupplierID = @product 

助けが必要.....!!!!

4

1 に答える 1

0

ストアド プロシージャでパターンをカンテネートできます。

CREATE PROCEDURE sp_products
(         
    @product VARCHAR(40),
    @month DATETIME,
    @year DATETIME
)
AS
SELECT  P.ProductName,
        P.UnitPrice,
        P.UnitsInStock,
        S.Name
FROM    Products P
        INNER JOIN Suppliers S 
            ON P.SupplierID = S.SupplierID 
WHERE   P.SupplierID = '%' + @product + '%'

GO

プロシージャの実行、

EXEC sp_products 'tofu', 'December', 1992

フォローアップの質問:@month@yearパラメータの使用は何ですか?

于 2013-03-20T05:21:15.923 に答える