SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Microsoft SQL Server » Ошибка при выполнении скрипта
- Ошибка при выполнении скрипта [сообщение #1165] Fri, 23 December 2022 07:05 Переход к следующему сообщению
tmpnikl в настоящее время не в онлайне  tmpnikl
Сообщений: 3
Зарегистрирован: December 2022
Junior Member
Здравствуйте, хотелось бы пробежаться по всем бд, и вывести кол-во записей конкретной таблицы, которая есть у всех бд
Только начал знакомиться, может так никто и не делает, тогда хотелось бы знать как надо делать..
declare @nd DATE='19.12.2022'
declare @kd DATE='21.12.2022'
declare @name varchar(30)
declare @kz INT=0
declare cur CURSOR for
SELECT name, 0 as fund
FROM sys.databases where formaT(create_date,'d','de-de') between
FORMAT(@nd,'d','de-de') and foRMAT(@kd,'d','de-de')
open cur
fetch next from cur into @name
Вот до сюда вроде бы всё нормально, а дальше ошибка
set @kz = (SELECT count(*) as kol FROM @name.[dbo].[tblFUND] where [deleted]=0);
update cur set [fund] = @kz;
тут должен быть цикл, но это потом, главное здесь разобраться, в чём причина неправильного синтаксиса
close cur
deallocate cur
А вот тут надо как-то вывести весь этот заполненный курсор в файл или в окно вывода, чтоб можно было скопипастить.

[Обновления: Fri, 23 December 2022 07:08]

Известить модератора

- Re: Ошибка при выполнении скрипта [сообщение #1166 является ответом на сообщение #1165] Fri, 23 December 2022 11:58 Переход к предыдущему сообщениюПереход к следующему сообщению
BlackEric в настоящее время не в онлайне  BlackEric
Сообщений: 369
Зарегистрирован: June 2022
Senior Member
Так ошибка-то какая?

Select в переменную имеет другой синтаксис:

declare @var1 int;

select 
    @var1 = field1
from
    table
where
    condition
- Re: Ошибка при выполнении скрипта [сообщение #1167 является ответом на сообщение #1166] Fri, 23 December 2022 12:13 Переход к предыдущему сообщениюПереход к следующему сообщению
tmpnikl в настоящее время не в онлайне  tmpnikl
Сообщений: 3
Зарегистрирован: December 2022
Junior Member
Ошибка синтаксиса Сообщение 102 уровень 15 состояние 1 неправильный синтаксис, это ни о чём не говорит, т.к. изменил по вашему варианту ошибка такая же..
Вместо set @kz = (SELECT count(*) as kol FROM @name.[dbo].[tblFUND] where [deleted]=0);
переписал SELECT @kz = count(*) FROM @name.[dbo].[tblFUND] where [deleted]=0;и убрал update временно, чтоб не путал. Я не знаю как @name подставлять в запрос.
- Re: Ошибка при выполнении скрипта [сообщение #1168 является ответом на сообщение #1167] Fri, 23 December 2022 12:36 Переход к предыдущему сообщениюПереход к следующему сообщению
BlackEric в настоящее время не в онлайне  BlackEric
Сообщений: 369
Зарегистрирован: June 2022
Senior Member
А, вы еще имя бд хотите динамически менять. ТОгда только так:

declare @DBNAME nvarchar(max);
set @DBNAME = 'msdb'

declare @kz int;

declare @TEMPLATE nvarchar(max) = '
declare @kz int;
SELECT @kz = count(*) FROM {SERVERNAME}.[dbo].[msdb_version];
Select @kz';

declare @SQL_SCRIPT nvarchar(MAX);

SET @SQL_SCRIPT = REPLACE(@TEMPLATE, '{SERVERNAME}', @DBNAME)

EXECUTE (@SQL_SCRIPT)
- Re: Ошибка при выполнении скрипта [сообщение #1169 является ответом на сообщение #1168] Fri, 23 December 2022 13:27 Переход к предыдущему сообщению
tmpnikl в настоящее время не в онлайне  tmpnikl
Сообщений: 3
Зарегистрирован: December 2022
Junior Member
Спасибо
Предыдущая тема: Возможно ли из шести таблиц сделать выборку по id в одну?
Следующая тема: Как из MSSQL Server отправить картинку почтой
Переход к форуму:
  


Текущее время: Mon Dec 30 05:37:29 GMT+3 2024

Общее время, затраченное на создание страницы: 0.00990 секунд