powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Цикл посредством T-SQL
7 сообщений из 7, страница 1 из 1
Цикл посредством T-SQL
    #32022263
Raf_I
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Может ли кто нибудь подсказать мне такую вещь , возможно ли посредством языка SQL создать цикл.
К примеру есть табл. и мне нужно просканировать в ней записи , сразу скажу записей более 1 000 000 и значений совпадающих прилично. Мне необходимо создать цикл опроса этих записей . Типа как на паскале - for i:=1 to 1000000 do ......
Подскажите кто знает.
...
Рейтинг: 0 / 0
Цикл посредством T-SQL
    #32022273
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделать цикл по записям можно, используя курсоры. Но прежде чем браться за них, лучше раскажите подробнее про задачу. В большинстве случаев можно прекрасно обойтись без них, это упростит код и повысит его производительность.
...
Рейтинг: 0 / 0
Цикл посредством T-SQL
    #32022275
Raf_I
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GreenSunrise : вообщем задача такая - есть SQL Server и Delphi. На SQL Server'e есть БД а в ней табл. ( в ней хранятся данные о человеке , т.е. ФИО , дата рождения и т.д.) Мне посредством Delphi - ADOQuery - скрипт на T-SQL(производящий поиск человека по дню его рождения - на сегодняшний день я уже написал , но проблема в том что он сравнивает с настоящим - днем , месяцем и самое плохое - годом, т.е. он показывает человека с сегодняшней датой рождения - типа 6.02.2002 , попытался я оставить только день и месяц - встала проблема - как просканировать - не только по этому году но и с 1940 по 2002 , попытался в дельфи зациклить этот Query - вообще глюки пошли. Вот я и ищу выход - цикл посредством T-SQL , я знаю что там есть такой оператор For , только как его использовать не могу понять.
...
Рейтинг: 0 / 0
Цикл посредством T-SQL
    #32022286
Фотография Александр Степанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Цикл здесь и не нужен совершенно:

create table a
(
pk int identity(1,1) not null,
FIO nvarchar(100) not null,
BirthDate smalldatetime not null
)
go

insert into a (FIO,BirthDate) values ('Иванов Иван Иванович','1965-02-14')
insert into a (FIO,BirthDate) values ('Петров Петр Петрович','1968-02-14')
insert into a (FIO,BirthDate) values ('Сидоров Иван Петрович','1944-06-30')
insert into a (FIO,BirthDate) values ('Сидоров Петр Иванович','1939-10-10')
go

create procedure BirthDateSeek
@searchdate smalldatetime
As
Select
pk,FIO,BirthDate
from
a
where
MONTH(@searchdate)=MONTH(BirthDate)
AND DAY(@searchdate)=DAY(BirthDate)
Go

exec BirthDateSeek '2002-02-14'
exec BirthDateSeek '2002-06-30'
exec BirthDateSeek '1900-01-01'
...
Рейтинг: 0 / 0
Цикл посредством T-SQL
    #32022291
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в дополнении:
если действительно 1 млн записей, то поиск может занимать довольно много времени - т.к. индекс здесь не используется, нужен полный перебор.
Что бы избежать этого можно ввести еще одну колонку и хранить там дату и день рождения за какой-то определённый год. По этой колонке можно построить индекс и тогда поиск будет мгновенный
...
Рейтинг: 0 / 0
Цикл посредством T-SQL
    #32022395
Raf_I
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое Александр за совет , вроде как действительно все оказалось намного проще чем я думал.
...
Рейтинг: 0 / 0
Цикл посредством T-SQL
    #32022481
Фотография Александр Степанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тем не менее советую прислушаться к совету SergSuper по поводу дополнительного поля - перфоманс это может улучшить основательно.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Цикл посредством T-SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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