我正在尝试修复其他人编写的存储过程。基本上,proc获取GroupingCode
的输入值,并根据该分组代码查询其余表。
然而,它一直返回空值。这是原始的存储过程:
ALTER PROCEDURE [dbo].[GetWebinars] (@GroupingCode VARCHAR(MAX) = 'AVM',
@ItemNumber VARCHAR(MAX) OUT,
@Title VARCHAR(MAX) OUT,
@SubTitle VARCHAR(MAX) OUT,
@ShortDescription VARCHAR(MAX) OUT,
@LongDescription VARCHAR(MAX) OUT,
@ShortImageUrl VARCHAR(MAX) OUT,
@MedImageUrl VARCHAR(MAX) OUT,
@LgImageUrl VARCHAR(MAX) OUT,
@GroupCode VARCHAR(MAX) OUT)
AS
SELECT @ItemNumber = prd.itemnumber,
@GroupingCode = prdtemp.groupingcode,
@Title = t.brochuredesc,
@SubTitle = prdtemp.SubTitle,
@ShortDescription = prdtemp.shortdescription,
@LongDescription = prdtemp.longdescription,
@ShortImageUrl = prdtemp.SmallImagePath,
@MedImageUrl = prdtemp.MediumImagePath,
@LgImageUrl = prdtemp.LargeImagePath
FROM pryor_producttemplate prdtemp
INNER JOIN pryor_prdItmmst prd
ON prdtemp.groupingcode = prd.groupcode
INNER JOIN pryor_topics t
ON prd.itemnumber = t.topiccode
WHERE prdtemp.groupingcode = @GroupingCode
AND t.country = 'U.S.A'
SELECT DISTINCT t.city,
t.country,
t.controlprice,
prd.itemnumber
FROM pryor_producttemplate prdtemp
INNER JOIN pryor_prdItmmst prd
ON prdtemp.groupingcode = prd.groupcode
INNER JOIN pryor_topics t
ON prd.itemnumber = t.topiccode
WHERE prdtemp.groupingcode = @GroupingCode
AND t.country = 'U.S.A'
我更改了第一行并更改了
@GroupingCode varchar(max) = 'AVM'
到
@GroupingCode varchar(max),
对我来说,输入值是硬编码似乎很奇怪。
无论如何,在进行更改并再次执行proc后,我得到了null值。这个过程是否写得正确?
如果这很难读,我道歉。我不熟悉Markdown。
感谢。
Oceantrain
答案 0 :(得分:1)
如果为@GroupingCode提供的值不,则更改
@GroupingCode varchar(max) = 'AVM'
到
@GroupingCode varchar(max)
导致@GroupingCode设置为NULL
这可能是你问题的根源吗?