Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Menggunakan 3 pembaruan dalam Prosedur Toko yang sama? Kesalahan Kecil

Anda memulai SP dengan ;WITH RatingLines ... yang menghubungkan ke UPDATE pertama pernyataan, bukan yang lain. Konstruk ini membuat CTE yang hanya terlihat oleh pernyataan pertama yang mengikutinya. Penjelasan lebih lanjut dapat ditemukan di TN untuk DENGAN common_table_expression (Transact-SQL) . Secara khusus kutipan dari Komentar ini menyoroti hal ini:

Agar tabel ini dikenal untuk semua pernyataan di SP Anda, buat variabel tabel atau tabel sementara untuk RatingLines alih-alih.

Garis besar menggunakan tabel sementara adalah sebagai berikut:

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. Cuplikan Basis Data SQL Server -1

  2. SQL:mencari string di setiap kolom varchar dalam database

  3. Bagaimana cara menghapus data tabel yang besar dalam SQL tanpa log?

  4. Nama file SQL Server vs versi

  5. Parsing OpenXML dengan beberapa elemen dengan nama yang sama