【发布时间】:2021-05-24 21:40:16
【问题描述】:
我有一个存储过程如下:
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'
我在这里做错了什么?
【问题讨论】:
-
你忘了设置你的 var "@Search as nvarchar" 的长度,它需要是 "@Search as nvarchar(50)" 或者你需要的任何长度
-
@Search的数据类型应该与DrgPackUpc.Upc完全匹配。所以如果那是varchar(20),那么你应该使用它而不是nvarchar(50)
标签: sql sql-server tsql stored-procedures