修复存储过程?

时间:2012-01-20 23:10:46

标签: sql sql-server stored-procedures

我正在尝试修复其他人编写的存储过程。基本上,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

1 个答案:

答案 0 :(得分:1)

如果为@GroupingCode提供的值,则更改

@GroupingCode varchar(max) = 'AVM'

@GroupingCode varchar(max)

导致@GroupingCode设置为NULL

这可能是你问题的根源吗?