Я хочу вытащить определенную строку из ряда таблиц, которые имеют критерии имени поля1. Проблема, с которой я сталкиваюсь, заключается в том, что когда я объединяю владельца и имя таблицы и пытаюсь вызвать «выберите критерии1 из @t, где linenum = 1», SQL ожидает, что @t будет таблицей. Мне нужно знать, как создать полное имя таблицы, а затем передать его в этот запрос. Я знаю, что могу использовать язык программирования для доступа к БД, но мне нужно, чтобы это было в SQL. Если кто-то знает о лучшем способе сделать это, это было бы также здорово.
declare @next as varchar
declare @owner varchar
while 1=1
begin
set @next = (select top 1 o.name FROM syscolumns c inner join sysobjects o on c.id = o.id
where c.name = 'criteria1' and o.id > @next order by o.id)
if @next is null
break
else
begin
set @owner = (select top 1 u.name
FROM syscolumns c inner join
sysobjects o on c.id = o.id left join
sysusers u on o.uid=u.uid
where c.name = 'criteria1' and o.id = @next order by o.id)
declare @t as varchar
set @t = @owner+'.'+@next
select criteria1 from @t where linenum = 1
end
continue
end