sql >> Database teknologi >  >> RDS >> Sqlserver

Bruger du 3 opdateringer i samme butiksprocedure? Lille fejl

Du starter SP med ;WITH RatingLines ... som forbinder til den første UPDATE udsagn, ikke de andre. Denne konstruktion opretter en CTE, der kun er synlig for den første sætning, der følger efter den. Yderligere forklaring kan findes i TN for MED common_table_expression (Transact-SQL) . Især dette uddrag fra Bemærkninger fremhæver dette:

For at få denne tabel kendt for alle udsagn i din SP, skal du oprette en tabelvariabel eller en midlertidig tabel for RatingLines i stedet.

Disposition ved hjælp af en midlertidig tabel ville være som følger:

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. Hvad er forskellen mellem en bruger og en rolle?

  2. Hent understreng i SQL Server

  3. Hvordan tæller man rækkerne efter oprettet dato i Laravel-forespørgselsbyggeren?

  4. PDO fejler med for mange poster, bufferforespørgsler