Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.07.31;
Скачать: [xml.tar.bz2];

Вниз

Что дает SET NOCOUNT ON?   Найти похожие ветки 

 
Bless   (2003-07-08 09:51) [0]

Сабж.

И еще вопрос.

Есть таблица Tab1 с полями
kod
name
parent - имя родителя

Как найти всех потомков (MSSQL 7.0) для записи с кодом, например, 1? А именно, как сделать то, что выделено в примере ниже, чтобы организовать цикл

declare @x int
set @x=1

create table #MyTable(
kod int,
name varchar(20),
parent int
)

insert into #MyTable
select * from tab1
where parent=@x

!!!!!!! @x=kod !!!!!!!!!

while @@rowcount>0
begin
insert into #MyTable
select kod, name, parent from tab1
where parent=@x

!!!!!!! @x=kod !!!!!!!!!
end


 
stone   (2003-07-08 10:19) [1]

1. А в справку заглянуть ломает?

SET NOCOUNT
Stops the message indicating the number of rows affected by a Transact-SQL statement from being returned as part of the results.

2. while exists (select kod from tab1 where kod in (select parent from #MyTable))
insert ... ну и т.д.


 
stone   (2003-07-08 10:19) [2]

только при инсерте вставлять только записи отсутствующие в #MyTable


 
stone   (2003-07-08 10:22) [3]

sorry

2. while exists (select kod from tab1 where kod in (select parent from #MyTable where kod <> tab1.kod))


 
Bless   (2003-07-08 11:54) [4]

>stone © (08.07.03 10:19)
>1. А в справку заглянуть ломает?

Не ломает. Просто сложности с переводом

Stops the message indicating the number of rows affected by a Transact-SQL statement from being returned as part of the results.

Как я понял, это означает, что отключается нумерация строк, возвращаемых SQL-запросом.
Я думал, что после SET NOCOUNT ON
перестанет работать @@rowcount. Но он работает.
Поэтому я наверное неправильно перевел. Потому и спрашиваю.


>2. while exists (select kod from tab1 where kod in (select >parent from #MyTable where kod <> tab1.kod))


Так я тоже могу. Но нельзя ли это сделать в цикле.
Просто этот вариант мне не очень нравится тем, что сначала
ищутся записи select-ом внутри Exists
while exists (select <записи>), а потом эти самые записи вставляются в таблицу
insert ... select <те же самые записи>
Получается, тут дважды выбираются одни и те же данные,
что не есть хорошо.


 
jocko   (2003-07-08 12:10) [5]

перевел правильно, но не правильно понял.
чтобы было проще- нипиши Хран. проц. в ней сначала insert а следом raiserror и вот эту опцию перед всем приделай, из клиента запусти (ado) и смотри что будет если опцию отключить и включить, а затем ту же проц запусти в Query Analizer, и тоже сравни...


 
sniknik   (2003-07-08 12:29) [6]

пример (результат получен с разбором всего возврацающегося от команды)

команда

INSERT INTO authors2 (COL2) VALUES ( 1)
SELECT * FROM authors2
Выполнено применительно к 1 записям. (no recordset) //от первой команды
применительно к 1 записям //от второй


то же самое с дополнением
SET NOCOUNT ON
INSERT INTO authors2 (COL2) VALUES ( 1)
SELECT * FROM authors2
Выполнено применительно к 2 записям //только от второй

вот в этой разнице и есть смысл.


 
Bless   (2003-07-08 17:39) [7]

Спасибо.
На второй вопрос уже можно не отвечать.
Но есть еще один вопросик:
в Profiler-е какой тип данных позволяет судить об эффективности запроса CPU или Duration? А то по смыслу вроде бы оба, но иногда
у одного batch-а CPU больше, а Duration меньше, чем у другого.
И непонятно, по чему судить об эффективности



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.07.31;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.009 c
1-100710
Дома
2003-07-18 15:00
2003.07.31
Гипер подсказка...


14-100975
Ower
2003-07-15 21:23
2003.07.31
Random


14-100919
zolotov
2003-07-14 19:19
2003.07.31
Как переводится слово Enhanced?


3-100581
Skywalker
2003-07-08 17:11
2003.07.31
Вставка записи в БД


3-100547
avch
2003-07-11 12:34
2003.07.31
FastReport





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский