2012-01-20 47 views
0

我正在修復別人寫的存儲過程。基本上,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後,我得到了空值。這個過程是否正確寫入?

我很抱歉,如果這很難看。我不熟悉Markdown。

謝謝。

Oceantrain

+1

'='AVM''只是表示如果沒有提供默認值。 –

+1

在表pryor_producttemplate中是否有提供的@GroupingCode?如果您嘗試在SQL編輯器中運行它,第二個查詢是否會返回任何內容? – Angelo

+0

感謝您的回覆。我試圖在SQL編輯器中執行它。默認值設置爲='AVM'。當我執行並輸入值'AVM'時,我得到結果。如果我從GroupingCode列中輸入任何其他值它將返回Null。 GroupingCode和ProductTemplate表格中充滿了健康的數據。所以我不明白爲什麼當我測試這個程序時,只有在進入'AVM'時纔會得到結果。 –

回答

1

如果值是爲@GroupingCode被提供,則改變

@GroupingCode varchar(max) = 'AVM' 

@GroupingCode varchar(max) 

導致@GroupingCode被設置爲NULL

可能這是你的來源問題?

+0

感謝您的回覆。我試圖在SQL編輯器中執行它。默認值設置爲='AVM'。當我執行並輸入值'AVM'時,我得到結果。如果我從GroupingCode列中輸入任何其他值它將返回Null。 GroupingCode和ProductTemplate表格中充滿了健康的數據。所以我不明白爲什麼當我測試這個程序時,只有在進入'AVM'時纔會得到結果。 –

+0

如果該值未提供給沒有爲其定義默認值的參數,我希望存儲過程無法首先執行。 –