мне нужна помощь, чтобы исправить мою проблему:хранимой процедуры для удаления повторяющихся строк
create procedure dbo.spDelDdup
(@field1 nvarchar(50)= null,
@field2 varchar(50),
@tblName varchar(50))
as
BEGIN
WITH CTE (@field1, @field2, Duplicate_Record_Count) AS
(
SELECT
@field1, @field2,
ROW_NUMBER() OVER(PARTITION BY @field1, @field2 ORDER BY @field1) AS Duplicate_Record_Count
FROM
@tblName
)
DELETE FROM CTE
WHERE Duplicate_Record_Count > 1
END
Я получаю сообщение об ошибке:
Msg 102, Level 15, State 1, Procedure spDelDdup, Line 91
Incorrect syntax near '@field1'.
Было бы неплохо, чтобы исправить мою проблему
Вы можете просто удалить '(@ field1, @ field2, Duplicate_Record_Count)'. Это необходимо, только если у вас нет уникальных имен столбцов в определении запроса в CTE. Кроме того, когда вы выбираете '@ field1' или любую переменную, вам нужно выполнить псевдоним в своем CTE. то есть 'select @ field1 как [someColumn]'. У вас также возникнут проблемы с попыткой передать имя таблицы в @tblName. Вам понадобится динамический SQL. – scsimon