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

Откуда:
Сообщений: 272
Хочу написать процедуру с одним входным параметром Имя таблицы.
В теле процедуры запросом

select name, object_name(parent_object_id) as object
from sys.foreign_keys
where object_name(referenced_object_id) = 'Measurements'

Получаю список таблиц,которые используют в качестве внешнего ключа переданную таблицу и имя внешнего ключа.

Как потом обойти результат этого запроса ?? Искала в гугле, не нашла таких примеров ...

Далее в цикле надо проверить есть ли записи count(*) в таблицах или нет.
Если есть - вернуть имена таблиц.
1 ноя 13, 10:59    [15062983]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с обходом результата выборки  [new]
Glory
Member

Откуда:
Сообщений: 104760
Tanya_0306
Искала в гугле, не нашла таких примеров ...

Вот почему все "ищут в гугле" вместо того, чтобы искать в хелпе продукта ?

Tanya_0306
Как потом обойти результат этого запроса ??

Результат запроса не является разве "обходом" ?
1 ноя 13, 11:04    [15063016]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с обходом результата выборки  [new]
qwerty112
Guest
Tanya_0306,

вы свой ADOX чтоле пишите ?
+
(15002170 , 15021588 , 14979668 , ... это то, что сразу в глаза "кинулось")

и зачем ? стандартные, работающие с любой СУБД методы, чем не устроили ?
1 ноя 13, 11:35    [15063304]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с обходом результата выборки  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Tanya_0306
В теле процедуры запросом

select name, object_name(parent_object_id) as object
from sys.foreign_keys
where object_name(referenced_object_id) = 'Measurements'

Имя объекта не идентифицирует однозначно этот объект. Объекты с одним и тем же именем могут существовать в разных схемах. Условно говоря, dbo.Measurements, vasya.Measurements, tanya.Measurements.
1 ноя 13, 11:41    [15063371]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с обходом результата выборки  [new]
Tanya_0306
Member

Откуда:
Сообщений: 272
qwerty112,

Нет, никакой ADOX свой я не пишу.
Я новичок в SQL и С# и пытаюсь решить поставленную передо мной задачу. Ищу помощи на форуме, в книжках и гугле.
1 ноя 13, 12:30    [15063912]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с обходом результата выборки  [new]
Tanya_0306
Member

Откуда:
Сообщений: 272
Glory,

Ну если результат возвращает несколько значений и по каждому из полученных значений надо еще данные вытащить и в итоге соединить ?
1 ноя 13, 12:32    [15063933]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с обходом результата выборки  [new]
Glory
Member

Откуда:
Сообщений: 104760
Tanya_0306
Ну если результат возвращает несколько значений и по каждому из полученных значений надо еще данные вытащить и в итоге соединить ?

То для этого используют еще join-ы
1 ноя 13, 12:33    [15063960]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с обходом результата выборки  [new]
qwerty112
Guest
Tanya_0306
qwerty112,

Нет, никакой ADOX свой я не пишу.

пока, так получается - что пишите
Tanya_0306
Я новичок в SQL и С# и пытаюсь решить поставленную передо мной задачу. Ищу помощи на форуме, в книжках и гугле.

так к этому и веду, что вы как "новичок", как-то усиленно "в лоб" решаете свою "поставленную задачу" (её бы хорошо, кстати, услышать)
по крайней мере, я сужу по тем (под)задачам которые я увидел в процитированных мной топиках...
вот все те вопросы - запросто решаются в любом ЯВУ с использованием библ.АДОХ , и без "трепанации" системных таблиц (которые, опять же, имеют свойство меняться от версии к версии)
1 ноя 13, 12:47    [15064061]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с обходом результата выборки  [new]
LexusR
Member

Откуда: Novosibirsk
Сообщений: 1887
DECLARE @Result TABLE (TableName nvarchar(100),[Count] INT)
DECLARE @TableName nvarchar(100)
DECLARE @Count INTEGER
DECLARE @SQL NVARCHAR(1000)
DECLARE [Tables] CURSOR LOCAL FORWARD_ONLY FOR
select TableName
from Bla-bla-bla
OPEN [Tables]
FETCH NEXT FROM [Tables] INTO @TableName
WHILE @@FETCH_STATUS=0
BEGIN
	SET @SQL = N'SELECT @count =count(*) FROM '+@TableName
	 EXEC sp_executesql  @SQL, '@Count INTEGER OUTPUT'
			  ,@Count					= @Count OUTPUT
	INSERT INTO 	@Result VALUES(@TableName,@Count)		  
	FETCH NEXT FROM [Tables] INTO @TableName
END
1 ноя 13, 12:51    [15064094]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить