Все, что я хочу сделать, - это установить переменную на количество строк, затронутых транзакцией, и отправить это в таблицу.Я не знаю, почему у меня проблемы, но вот мой код
Begin
Declare @errDate datetime
Declare @RowCount nvarchar(10)
Declare @Message nvarchar(max)
Declare @startproc datetime
Declare @endproc datetime
Declare @duration int
set @startproc = getdate()
Declare @myDate Datetime
Set @myDate = CAST(CONVERT(varchar,getdate()-1, 112) +' ' +'00:00 AM'AS DATETIME)
DELETE FROM [Cal_CommOps].[dbo].[Progression_PreCall_CaliforniaECH]
Where segStart_date = @myDate
INSERT INTO [Cal_CommOps].[dbo].[Progression_PreCall_CaliforniaECH]
([callid]
,[segstart_date]
,[dialed_num]
,[origlogin]
,[duration])
SELECT *
FROM (
Select callid,
CAST ([SEGSTART_D] as datetime) as segstart_date,
RIGHT(dialed_num, 10) as dialed_num,
origlogin,
duration
FROM [CMS_ECH] ECH
Inner join [Cal_CommOps].[dbo].[CommOps_Emp] EMP on EMP.extension = ECH.origlogin
AND Dept in ('Pre-Call')
Where [SEGSTART_D] = @myDate and dialed_num <> ''
UNION
Select callid,
CAST ([SEGSTART_D] as datetime) as segstart_date,
RIGHT(calling_pty, 10) as dialed_num,
anslogin,
duration
FROM [CMS_ECH] ECH
Inner join [Cal_CommOps].[dbo].[CommOps_Emp] EMP on EMP.extension = ECH.anslogin
AND Dept in ('Pre-Call')
Where [SEGSTART_D] = @myDate and calling_pty <> ''
) as myCalls
Set @RowCount = @@rowcount
Set @endproc = getdate()
Set @duration = DATEDIFF(minute, @startproc, @endproc)
Set @errDate = getdate()
Exec usp_myDashboardInsert 'PreCall_ECH', @@Rowcount, @errDate, @duration
End
Даже если я попытаюсь
Exec usp_myDashboardInsert 'PreCall_ECH', @Rowcount, @errDate, @duration
, я все равно получу 1.
Почему это так и как мне это исправить?
Если я изменю код и добавлю Select @@ROWCOUNT
перед Set @RowCount = @@rowcount
, тогда он будет работать, чтобы выбрать его, но я все еще хочу его в переменной.
Ответ: Я думаю, это был случай @@ ROWCOUNT, я использовал @@ Rowcount, и он хотел @@ ROWCOUNT.