2012-01-20 3 views
0

다른 사람이 작성한 저장 프로 시저를 수정하려고합니다. 기본적으로 proc은 GroupingCode에 대한 입력 값을 취해 그 그룹 코드를 기반으로 나머지 테이블을 쿼리합니다.저장 프로 시저 수정 중?

그러나 null 값을 계속 반환합니다. 여기에 원래 저장된 프로 시저입니다

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), 

@GroupingCode varchar(max) = 'AVM' 

을 변경했습니다.

어쨌든 변경 후 proc을 다시 실행하면 null 값을 얻게됩니다. 이 proc 파일이 올바로 작성 되었습니까?

사과를 읽기가 어려울 경우 사과드립니다. 나는 Markdown에 익숙하지 않다.

감사합니다.

Oceantrain

+1

'= 'AVM''은 하나가 제공되지 않으면 기본값임을 의미합니다. –

+1

pryor_producttemplate 테이블에 제공된 @GroupingCode가있는 행이 있습니까? 두 번째 쿼리는 SQL 편집기에서 실행하려고하면 아무 것도 반환합니까? – Angelo

+0

응답 해 주셔서 감사합니다. SQL 편집기에서 두 가지 방법으로 실행 해 보았습니다. 기본값은 'AVM'으로 설정됩니다. 내가 'AVM'값을 입력하고 실행하면 결과를 얻습니다. GroupingCode 열에서 다른 값을 입력하면 Null이 반환됩니다. GroupingCode W ProductTemplate 테이블은 정상적인 데이터로 채워집니다. 그래서 나는 내가 그 절차를 시험 할 때 'AVM'을 입력 할 때 나는 단지 불만을 느낀다는 것을 이해하지 못한다. –

답변

1

값은 NULL로 설정되는 다음 @GroupingCode에

@GroupingCode varchar(max) 

결과

@GroupingCode varchar(max) = 'AVM' 

변경 @GroupingCode 위해 공급되는 하지이면

이것이 귀하의 출처가 문제?

+0

응답 해 주셔서 감사합니다. SQL 편집기에서 두 가지 방법으로 실행 해 보았습니다. 기본값은 'AVM'으로 설정됩니다. 내가 'AVM'값을 입력하고 실행하면 결과를 얻습니다. GroupingCode 열에서 다른 값을 입력하면 Null이 반환됩니다. GroupingCode W ProductTemplate 테이블은 정상적인 데이터로 채워집니다. 그래서 나는 내가 그 절차를 시험 할 때 'AVM'을 입력 할 때 나는 단지 불만을 느낀다는 것을 이해하지 못한다. –

+0

기본값이 정의되지 않은 매개 변수에 대해 값이 제공되지 않은 경우 먼저 저장 프로 시저가 실행되지 않을 것으로 예상됩니다. –