Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Ошибка в синтаксике  [new]
Интересно
Member

Откуда:
Сообщений: 26
Добрый день! Делаю отчет на sql, уровень начинающий. Задача вкратце: делать выборку документов из нескольких бд. Возможно некоторые действия покажутся неправильными, жду критики в плане оптимизации. А также столкнулся с проблемой..как подставлять значение переменной после "use.." для перебора баз. Если кто нибудь сможет помочь, буду благодарен!
declare @sprskl table (code text, firmcode int, parent int, branch text)
declare @sprskl2 table (number int, code text, branch text)
declare @min int, @max int
--формирование списка складов по фирме
insert into @sprskl 
select s.code, 
	   (select code from sprfirm where code=dbo.fn_getchar_ex('SPR','S32','Организация',s.code,0,0,'')) as firmcode,
       (select top 1 parent from spectree where spectree.objtype='SPR' AND spectree.objcode='S32' and len(ic) < 4 and ic = s.identity_column) as parent,
	   (select dbase from sprbranch where code = (select branch from sprskl where code = s.code))as branch
from sprskl s
--
--Нумерация списка складов, добавление наим.базы
insert into @sprskl2 

select (ROW_NUMBER() OVER (order by parent)) as number,
       code as code,
       branch as branch
from @sprskl
where parent = 107
and firmcode = '"+Код_фирмы+ "'

--определение мин и макс значений складов для расчета
set @min = (select min(number) from @sprskl2)
set @max = (select max(number) from @sprskl2)

declare @n int
declare @base text

--цикл для перебора бд
while (@min < @max)
begin
set @n = 1;
--определение имени бд
set @base  = (select branch from @sprskl2 where number = @n);

-- использовать бд (здесь не работает)
use @base; 

declare @tb_nn table (ic int, nn text, maincode text, nameimporter text, vid int, namenn text, namesklotpr text, namesklpol text, ob float, kolp float, cena float, summa float)

insert into @tb_nn 
select s.ic as ic,
	   s.nn as nn,
	   (select maincode from sprnn where nn = s.nn) as maincode,
	   (select name from sprclient where code = (select importer from sprnn where nn = s.nn)) as nameimporter,
	   (select nnvid from sprnn where nn = s.nn) as vid, 
	   (select name from sprnn where nn = s.nn) as namenn,
	   (select name from sprskl where code = (select sklad from spr019 where identity_column = s.ic)) as namesklotpr, 
	   (select name from sprskl where code = (select sklad_d from spr019 where identity_column = s.ic)) as namesklpol,
	   (select d_litr from sprnn where nn = s.nn) as ob, 
	   kolp as kolp,
	   cena as cena,
	   summa as summa
from spec019 s
set @n = @n + 1;
end;

select maincode as Код,
	   vid as ВидПродукции,
	   nameimporter as Производитель,
	   namenn as Наименование,
	   kolp as Количество,
	   ((ob*kolp)/10) as КоличествоДал,
	   namesklotpr as СкладОтправитель,
	   namesklpol as СкладПолучатель,
	   summa as Сумма
from @tb_nn
where vid <> 0
13 окт 15, 12:53    [18272099]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в синтаксике  [new]
o-o
Guest
никак не подставить переменную после use.
объектам другой базы кроме схемы пропишите базу префиксом
13 окт 15, 12:59    [18272132]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в синтаксике  [new]
Интересно
Member

Откуда:
Сообщений: 26
можете примерчик кинуть? :)
13 окт 15, 13:35    [18272426]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в синтаксике  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Интересно
можете примерчик кинуть? :)

автор
from ИмяБазы.ИмяСхемы.spec019 s
13 окт 15, 13:39    [18272455]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в синтаксике  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32175
Интересно
как подставлять значение переменной после "use.." для перебора баз.
Нельзя перебирать базы в запросах. Это вообще неправильно, так проектировать системы.

Можно писать динамический sql, если уж очень надо в отчётах.
13 окт 15, 17:15    [18274031]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в синтаксике  [new]
Интересно
Member

Откуда:
Сообщений: 26
Пока что не до динамического sql :)
Спасибо за ответы, буду переделывать, перебирать базы силами встроенного языка программы. а не sql.
15 окт 15, 10:26    [18281420]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить