Неверный синтаксис рядом с ключевым словом "DECLARE" - PullRequest
1 голос
/ 26 марта 2012

У меня есть запрос для расчета загрузки ЦП, и мне нужно скопировать вывод в таблицу, но я получаю сообщение об ошибке

Неверный синтаксис рядом с ключевым словом "DECLARE".

Пожалуйста, найдите запрос.

Insert into dbo.cpudata([database],[system cpu],[database cpu],[%],[Date&time])
DECLARE @total INT
SELECT @total=sum(cpu) FROM sys.sysprocesses sp (NOLOCK)
join sys.sysdatabases sb (NOLOCK) ON sp.dbid = sb.dbid
SELECT sb.name 'database', @total 'system cpu', SUM(cpu) 'database cpu', CONVERT(DECIMAL(4,1), CONVERT(DECIMAL(17,2),SUM(cpu)) / CONVERT(DECIMAL(17,2),@total)*100) '%', GETDATE () as [Date&time]
FROM sys.sysprocesses sp (NOLOCK)
JOIN sys.sysdatabases sb (NOLOCK) ON sp.dbid = sb.dbid
--WHERE sp.status = 'runnable'
GROUP BY sb.name
ORDER BY CONVERT(DECIMAL(4,1), CONVERT(DECIMAL(17,2),SUM(cpu)) / CONVERT(DECIMAL(17,2),@total)*100) desc

Ответы [ 2 ]

0 голосов
/ 26 марта 2012

Вы не можете DECLARE переменную в середине оператора INSERT. Вы сделали это, между INSERT INTO <columnlist> и SELECT <columnlist>.

Вместо этого переместите объявление выше начала INSERT.

0 голосов
/ 26 марта 2012

Не могли бы вы перейти к утверждению, которое заполняет @total над вставкой.

DECLARE @total INT
SELECT @total=sum(cpu) FROM sys.sysprocesses sp (NOLOCK)
join sys.sysdatabases sb (NOLOCK) ON sp.dbid = sb.dbid
Insert into dbo.cpudata([database],[system cpu],[database cpu],[%],[Date&time])
...............
...