Obteniendo un error de sintaxis incorrecta en el Procedimiento Almacenado con CTE.
Estoy tratando de crear un procedimiento almacenado donde necesito encontrar todas las últimas entradas de un número de distribuidor específico y luego obtener el conteo total según algunas condiciones. Lo he creado así:
CREATE PROCEDURE [dbo].[GetNotificationCount] @DealerNumber varchar(50),
@NotificationCount int OUT
AS
BEGIN
DECLARE @UserId varchar(50);
WITH Notifications (RequestId, StatusId, RequestStatusId, UserId, row_num) AS
(SELECT r.ID,
rs.StatusID,
rs.ID,
r.UserID,
ROW_NUMBER() OVER (PARTITION BY r.Id, rs.StatusID ORDER BY DateTimeStamp DESC) AS row_num
FROM Requests r
INNER JOIN RequestStatuses rs ON r.ID = rs.RequestID
WHERE r.DealerNumber = @DealerNumber)
Set @UserId = (Select Top 1 UserId from Requests where DealerNumber = @DealerNumber)
SELECT @NotificationCount = COUNT(*)
FROM Notifications n
INNER JOIN Statuses s ON n.StatusId = s.ID
WHERE n.row_num = 1
AND n.StatusId IN (SELECT ID FROM Statuses WHERE DealerPortal = 'Additional Info Needed')
AND n.RequestStatusId NOT IN (SELECT RequestStatusId FROM AdditionalInfoViewed WHERE UserId = @UserId);
END;
Pero estoy obteniendo un error de tiempo de compilación:
Error de sintaxis incorrecta cerca de la instrucción SET.
No estoy seguro de dónde me equivoqué. Por favor, sugiera.
davy.ai
Parece que hay un error en el código. La línea:
debe ser cambiada por:
Esta es la sintaxis correcta para asignar una variable con una instrucción SELECT en SQL Server.
Una vez realizada esta actualización, el procedimiento almacenado debería compilar sin errores.