他の人が書いたストアドプロシージャを修正しようとしています。基本的には、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
'= 'AVM''は、それが提供されていない場合のデフォルト値であることを意味します。 –
pryor_producttemplateテーブルに、指定された@GroupingCodeを持つ行がありますか? 2番目のクエリは、SQLエディタで実行しようとすると何かを返しますか? – Angelo
お返事ありがとうございます。私は両方の方法でSQLエディタで実行しようとしました。デフォルト値は= 'AVM'に設定されています。実行して値 'AVM'を入力すると結果が得られます。 GroupingCode列から他の値を入力すると、Nullが返されます。 GroupingCodeテーブルとProductTemplateテーブルには健全なデータが格納されています。だから私はなぜ私は手順をテストするときに 'AVM'を入力するときに嫌がらせを得るのか分からない。 –