存储过程不适用于变量

Stored Procedure not working with variables

我有一个存储过程如下:

CREATE Procedure [dbo].[GetDrugPackID]
    @Search as nvarchar
As
Begin
    SELECT DrgPack.ID, DrgPack.PackSize, Drg.BrandName, Drg.DIN, Drg.Strength
  FROM [Pharmacy].[dbo].[DrgPack] INNER JOIN
  Drg ON Drg.ID = DrgPack.DrgID INNER JOIN
  DrgPackUPc ON DrgPack.ID = DrgPackUpc.DrgPackId
  WHERE DrgPackUpc.Upc = '@Search'
End

当我 运行 通过将搜索变量作为 04029125070527 传递时,我没有得到任何结果。

但是如果我按如下方式编辑我的存储过程,我会得到一个结果。唯一的区别是在上面我试图发送变量,在第二个中它是硬编码的(不是我想做的,只是想调试)。

CREATE Procedure [dbo].[GetDrugPackID]
    @Search as nvarchar
As
Begin
    SELECT DrgPack.ID, DrgPack.PackSize, Drg.BrandName, Drg.DIN, Drg.Strength
  FROM [Pharmacy].[dbo].[DrgPack] INNER JOIN
  Drg ON Drg.ID = DrgPack.DrgID INNER JOIN
  DrgPackUPc ON DrgPack.ID = DrgPackUpc.DrgPackId
  WHERE DrgPackUpc.Upc = '04029125070527'

我做错了什么?

您需要声明 nvarchar 参数的大小。如果没有大小声明,您的参数将隐式声明为 nvarchar(1).

另外,你的参数不能用单引号。

WHERE DrgPackUpc.Upc = @Search