存储过程不适用于变量
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
我有一个存储过程如下:
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