Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Поиск значения по всей базе. / 4 сообщений из 4, страница 1 из 1
12.07.2001, 11:32
    #32009444
Marat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск значения по всей базе.
Добрый день!
Может кто делал хранимую процедуру или выборку на тему:
Задается, к примеру, числовое значение и необходимо для текущей БД выбрать записи из все талиц, содержащее в каком-либо числовом поле данное значение в виде:
Таблице, Поле, Ключ (если он есть)
...
Рейтинг: 0 / 0
12.07.2001, 13:56
    #32009454
Поиск значения по всей базе.
НУ напиши цикл типа
DECLARE cur CURSOR FOR
SELECT name from sysobjects where type = 'U'

---втнутри цикла собирай строку:
SELECT @sSQL = 'SELECT * FROM ' + @sTable + ' WHERE FIELD = ' + CONVERT(varchar, @nValue)
EXECUTE ( @sSQL )

Вот и все. Можно конечно и хранимыми процедурами воспользоваться, но не помню имени, то типа ...foreeachtable...

И хорошо бы во всех таблицах иметь поле с одинм и тем же наименованием )))


Павел
...
Рейтинг: 0 / 0
12.07.2001, 15:14
    #32009464
GreenSunrise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск значения по всей базе.
create proc sp_find_value
@value sql_variant
as
begin
set nocount on

declare @strSQL nvarchar(4000)
declare @table_name sysname
declare @col_name sysname
declare @count int
declare @strMsg nvarchar(4000)

declare curSearch cursor fast_forward for
select so.name, sc.name from sysobjects so, syscolumns sc where so.id = sc.id and so.type in ('S', 'U')

open curSearch
fetch curSearch into @table_name, @col_name
while @@fetch_status = 0
begin
set @strSQL = 'select @count = count(*) from ' + @table_name + ' where ' + @col_name + ' = @value'
exec sp_executesql @strSQL, N'@value sql_variant, @count int out', @value = @value, @count = @count out

if @count > 0
begin
set @strMsg = @table_name + '.' + @col_name
print @strMsg
end

fetch curSearch into @table_name, @col_name
end
close curSearch
deallocate curSearch
end

Правда, будет ругаться на колонки типа text, ntext, image - они не могут участвовать в условии where. Если напрягает, поставь отсев через проверку поля в таблице systypes.
...
Рейтинг: 0 / 0
12.07.2001, 19:06
    #32009482
Fompro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск значения по всей базе.
http://www.gvu.newmail.ru/sp_search_on_all_db.zip
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Поиск значения по всей базе. / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]