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

Откуда:
Сообщений: 8
Можно ли перебрать записи в таблице?
Видение такое:
1. Выполняем запрос и получаем таблицу
2. Циклом перебираем каждую строчку (аналогия foreach)
3. Каждую полученную строчку обрабатываем

Короче изучаю MSSQL 2-й день, прошу сильно не пинать.
30 июл 15, 11:07    [17953885]     Ответить | Цитировать Сообщить модератору
 Re: Перебор записей в таблице  [new]
Glory
Member

Откуда:
Сообщений: 104751
EVGENY_EN
Видение такое:
1. Выполняем запрос и получаем таблицу
2. Циклом перебираем каждую строчку (аналогия foreach)
3. Каждую полученную строчку обрабатываем

Это называется SELECT
30 июл 15, 11:10    [17953896]     Ответить | Цитировать Сообщить модератору
 Re: Перебор записей в таблице  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Можно,но как правило не нужно:)
Что вы хотите сделать с каждой строчкой в таблице ?
30 июл 15, 11:10    [17953898]     Ответить | Цитировать Сообщить модератору
 Re: Перебор записей в таблице  [new]
EVGENY_EN
Member

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

Согласен, а я же на выходе получаю сразу полноценную таблицу, а как обратиться к конкретной строчке (ячейки)?
Хочу смоделировать такую ситуацию, например select-ом получаю строки, в процессе перебора отправляю значение каждой ячейки в процедуру, где данные участвуют в дальнейшей обработке
30 июл 15, 11:16    [17953932]     Ответить | Цитировать Сообщить модератору
 Re: Перебор записей в таблице  [new]
EVGENY_EN
Member

Откуда:
Сообщений: 8
Может это можно сделать другим методом???
30 июл 15, 11:16    [17953936]     Ответить | Цитировать Сообщить модератору
 Re: Перебор записей в таблице  [new]
Glory
Member

Откуда:
Сообщений: 104751
EVGENY_EN
а я же на выходе получаю сразу полноценную таблицу, а как обратиться к конкретной строчке (ячейки)?

Прямо в тексте SELECT и обратится

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

Перепишите процедуру так, чтобы она "обрабатывала" сразу всю таблицу
30 июл 15, 11:19    [17953947]     Ответить | Цитировать Сообщить модератору
 Re: Перебор записей в таблице  [new]
xenix
Guest
А я покажу темную сторону :-)
То, что Вы хотите, называется "курсор"
30 июл 15, 11:25    [17953983]     Ответить | Цитировать Сообщить модератору
 Re: Перебор записей в таблице  [new]
EVGENY_EN
Member

Откуда:
Сообщений: 8
А можете пример накинуть какой нибудь?
Опыта мало в MSSQLe, нет четкого понимания еще(((
Заранее ОГРОМНОЕ СПАСИБО!!!
30 июл 15, 11:28    [17954005]     Ответить | Цитировать Сообщить модератору
 Re: Перебор записей в таблице  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
EVGENY_EN
А можете пример накинуть какой нибудь?
Опыта мало в MSSQLe, нет четкого понимания еще(((
Заранее ОГРОМНОЕ СПАСИБО!!!
А не Вы ли должны опубликовать здесь пример?
Со структурой таблиц (CREATE TABLE), тестовыми данными (INSERT), версией сервера (PRINT @@VERSION)
и словесным описанием задачи?
30 июл 15, 11:32    [17954021]     Ответить | Цитировать Сообщить модератору
 Re: Перебор записей в таблице  [new]
EVGENY_EN
Member

Откуда:
Сообщений: 8
iap
EVGENY_EN
А можете пример накинуть какой нибудь?
Опыта мало в MSSQLe, нет четкого понимания еще(((
Заранее ОГРОМНОЕ СПАСИБО!!!
А не Вы ли должны опубликовать здесь пример?
Со структурой таблиц (CREATE TABLE), тестовыми данными (INSERT), версией сервера (PRINT @@VERSION)
и словесным описанием задачи?


Я хочу это сделать, хочу понять как это реализовать, ну а create table, insert into, че тут писать то)
Описание задачи выше
30 июл 15, 11:34    [17954030]     Ответить | Цитировать Сообщить модератору
 Re: Перебор записей в таблице  [new]
Glory
Member

Откуда:
Сообщений: 104751
EVGENY_EN
Я хочу это сделать, хочу понять как это реализовать,

Нет желания установить хелп продукта ?
30 июл 15, 11:35    [17954034]     Ответить | Цитировать Сообщить модератору
 Re: Перебор записей в таблице  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
EVGENY_EN
iap
пропущено...
А не Вы ли должны опубликовать здесь пример?
Со структурой таблиц (CREATE TABLE), тестовыми данными (INSERT), версией сервера (PRINT @@VERSION)
и словесным описанием задачи?


Я хочу это сделать, хочу понять как это реализовать, ну а create table, insert into, че тут писать то)
Описание задачи выше
Что "это сделать"? Нет там никакого описания.
И есть правила форума, которые я и перечислил, чтобы Вам даже искать не надо было.
На нет и суда нет, как говорится...
30 июл 15, 11:42    [17954062]     Ответить | Цитировать Сообщить модератору
 Re: Перебор записей в таблице  [new]
EVGENY_EN
Member

Откуда:
Сообщений: 8
Ребят, установил хелп, ну не знаю как реализовать тот алгоритм!!!
Быстрее б написали, честно)
30 июл 15, 11:44    [17954073]     Ответить | Цитировать Сообщить модератору
 Re: Перебор записей в таблице  [new]
Glory
Member

Откуда:
Сообщений: 104751
EVGENY_EN
Ребят, установил хелп, ну не знаю как реализовать тот алгоритм!!!

Ну так читайте про курсоры

EVGENY_EN
Быстрее б написали, честно)

Ага. И не все последующие вопросы вам тоже сразу готовый код писать ?
30 июл 15, 11:45    [17954083]     Ответить | Цитировать Сообщить модератору
 Re: Перебор записей в таблице  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8826
EVGENY_EN
Ребят, установил хелп, ну не знаю как реализовать тот алгоритм!!!
Быстрее б написали, честно)


Почему Вы выбрали построчную обработку? Это самое неэффективное решение.
30 июл 15, 12:16    [17954312]     Ответить | Цитировать Сообщить модератору
 Re: Перебор записей в таблице  [new]
xenix
Guest
Странно все это. К курсорам не приходят на второй день изучения SQL.
Но если уж так надо, то вперед

IF OBJECT_ID(N'dbo.TestTable',N'U')IS NOT NULL
  DROP TABLE dbo.TestTable;
CREATE TABLE dbo.TestTable
(
  TestTable_ID TINYINT IDENTITY(1,1)NOT NULL PRIMARY KEY,
  TestTableValue VARCHAR(10)NOT NULL
)  ;
GO
INSERT dbo.TestTable(TestTableValue)
VALUES('ALFA'),('BETTA'),('GAMMA'),('DELTA');

DECLARE @InTestTableID TINYINT;
DECLARE @InTestTableValue VARCHAR(10);
DECLARE cCursor CURSOR LOCAL FAST_FORWARD READ_ONLY FOR
 SELECT TestTable_ID,TestTableValue
  FROM dbo.TestTable;
OPEN cCursor;
FETCH NEXT FROM cCursor INTO @InTestTableID,@InTestTableValue;
WHILE(@@FETCH_STATUS=0)
 BEGIN
 
 --ТУТ ОБРАБОТКА
 PRINT(@InTestTableValue);
 FETCH NEXT FROM cCursor INTO @InTestTableID,@InTestTableValue;
 END
CLOSE cCursor;
DEALLOCATE cCursor;    

DROP TABLE dbo.TestTable;


а вообще Вам правильно посоветовали: не тащите в мир СУБД диезовские подходы
30 июл 15, 12:36    [17954458]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить