SQL Как составить список столбцов в таблице как оператор курсора - PullRequest
1 голос
/ 04 мая 2011

ниже - это единственный метод, с помощью которого мне удалось извлечь имена таблиц из нашей базы данных, заменив верхнюю 1 на 2, 3, 4 ..... 499, 500.

проблема в том, что нет прямого доступа к базе данных, использование сторонней программы (для юридических фирм) должно иметь доступ к данным, и это дает ограниченные возможности относительно того, что можно сделать, таким образом, обычные методы возврата данныхвообще не будет работать.Похоже, что данные возвращаются с использованием курсоров на основе ошибок, выводимых при использовании «for xml auto».

select(
(select min(name) from 
(select top 1 name from sys.Tables order by name desc)
as ax) + ', ' + 
(select min(name) from 
(select top 2 name from sys.Tables order by name desc)
as ax)  + ', ' + 

)

Теперь я хочу повторить эту процедуру, чтобы вернуть второе, третье, четвертое имя столбца в таблице.Приведенное ниже может работать для извлечения первого имени столбца

SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.Columns where TABLE_NAME = <table name>

, но мои попытки повторить первую процедуру не удаются;top 2, top 3 и т. д. вернули одно и то же имя столбца.

Справка была бы отличной.

спасибо.

Ответы [ 2 ]

2 голосов
/ 04 мая 2011

Попробуйте вставить запрос for xml auto в другой оператор выбора

select (select table_name, column_name, ordinal_position, data_type
        from information_schema.columns
        where table_name = 'T'
        order by 1,3
        for xml auto)

Использование этого в курсорах работает нормально:

declare C cursor for
select (select table_name, column_name, ordinal_position, data_type
        from information_schema.columns
        where table_name = ''
        order by 1,3
        for xml auto)
open C
declare @L varchar(max)
fetch next from C into @L
close C
deallocate C
select @L
2 голосов
/ 04 мая 2011

Это должно принести вам всю необходимую информацию (проверено на SQL Server 2005)

select table_name, column_name, ordinal_position, data_type
from information_schema.columns
where table_name = ''
order by 1,3
for xml auto
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...