sql >> Database >  >> RDS >> Sqlserver

3 updates gebruiken in dezelfde winkel Procedure? Kleine fout

Je start de SP met ;WITH RatingLines ... die verbinding maakt met de eerste UPDATE verklaring, niet de andere. Deze constructie creëert een CTE die alleen zichtbaar is voor de eerste instructie die erop volgt. Meer uitleg is te vinden in de TN voor MET common_table_expression (Transact-SQL) . Dit fragment uit Opmerkingen benadrukt dit in het bijzonder:

Om deze tabel voor alle statements in uw SP bekend te maken, maakt u een tabelvariabele of een tijdelijke tabel voor de RatingLines in plaats van.

Een overzicht met een tijdelijke tabel ziet er als volgt uit:

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;



  1. Hoe een gebruikersnaam en wachtwoord in te stellen met de broncodegenerator van Slick?

  2. Welke impact kunnen verschillende cursoropties hebben?

  3. Accent- en hoofdletterongevoelige COLLATE-equivalent in Oracle

  4. SQLAlchemy of psycopg2?