Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Използване на 3 актуализации в една и съща процедура за съхраняване? Малка грешка

Започвате SP с ;WITH RatingLines ... който се свързва с първата UPDATE изявление, а не другите. Тази конструкция създава CTE, който е видим само за първия израз, който го следва. Повече обяснения могат да бъдат намерени в TN за С 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;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 5 бързи полезни съвети за SQL Server Производствени администраторите на бази данни

  2. SQL картографира влизане към съществуващ потребител

  3. Не може да се влезе с помощта на SQL удостоверяване САМО от отдалечен сървър

  4. Как да деактивирате CDC върху набор от таблици ИЛИ да деактивирате за всички таблици в база данни в SQL Server - урок за SQL Server

  5. Грешка при импортиране при използване на Openrowset