आप SP की शुरुआत ;WITH RatingLines ...
. के साथ करते हैं जो पहले UPDATE
. से जुड़ता है बयान, अन्य नहीं। यह निर्माण एक सीटीई बनाता है जो केवल इसके बाद के पहले कथन के लिए दृश्यमान होता है। TN में with common_table_expression (Transact-SQL)<के लिए अधिक स्पष्टीकरण पाया जा सकता है। /ए> . विशेष रूप से रिमार्क्स का यह अंश इस पर प्रकाश डालता है:
अपने SP में सभी कथनों के लिए इस तालिका को ज्ञात करने के लिए, RatingLines
के लिए एक तालिका चर या एक अस्थायी तालिका बनाएं बजाय।
एक अस्थायी तालिका का उपयोग करके रूपरेखा इस प्रकार होगी:
Select RDA.[CTS] AS [CTS]
,RDA.[B_KEY] AS [B_KEY]
,RDA.[H_KEY] AS [H_KEY]
,RDA.[RT_ID] AS [RT_ID]
,RDA.[RT_AVGRATING] AS [RT_AVGRATING]
,RDDA.[RTD_COMMENT] AS [RTD_COMMENT]
INTO #RatingLines -- Create #RatingLines as temporary table
From [DynNavHRS].[HRSDB].[HTL_RATING_ALL_DA] RDA
Join [DynNavHRS].[HRSDB].[HTL_RATING_DETAIL_ALL_DA] RDDA
ON RDA.RT_ID =RDDA.RT_ID
AND RDDA.[RTD_COMMENT] <> ''
AND RDA.[B_KEY]='19214642';
-- Throughout the rest of the SP, use #RatingLines as your ratings table; eg:
...
INNER JOIN #RatingLines RL1
...
-- At the end of the SP, drop the temporary table
DROP TABLE #RatingLines;