sql >> Databáze >  >> RDS >> Sqlserver

Používáte 3 aktualizace ve stejném Store Procedure? Malá chyba

SP spustíte pomocí ;WITH RatingLines ... který se připojuje k prvnímu UPDATE prohlášení, ne ty ostatní. Tento konstrukt vytváří CTE, který je viditelný pouze pro první příkaz, který za ním následuje. Další vysvětlení lze nalézt v TN pro WITH common_table_expression (Transact-SQL) . Tento výňatek z poznámek zdůrazňuje zejména toto:

Chcete-li, aby tato tabulka byla známá pro všechny příkazy ve vašem SP, vytvořte proměnnou tabulky nebo dočasnou tabulku pro RatingLines namísto.

Obrys pomocí dočasné tabulky by vypadal takto:

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. Jak přesně mám uložit zeměpisnou šířku a délku?

  2. Index pro sloupec s možnou hodnotou Null

  3. Jak vložit Seznam <Produkty> do databáze

  4. nelze zvýšit limit otevřených souborů v mariadb 10 na centos7