Курсоры



Курсоры

До сих пор сервер возвращал все результаты запроса по его завершении. Иногда бывает предпочтительнее получать ответ построчно. Чаще всего это справедливо при встраивании SQL-запросов в другие программы. Если запрос возвращает десятки тысяч строк, очень велика вероятность, что вам захочется обработать результаты построчно, а не хранить все в памяти для дальнейшего использования. Этот метод применяется в большинстве случаев, когда необходимо обращаться к SQL из Perl. Вот маленькая программа на SQL, в которой показано употребление курсоров на сервере Sybase или MS-SQL:

USE sysadm

-- объявляем переменные DECLARE (ahostname character(30) DECLARE @ip character(15)

-- объявляем курсор

DECLARE hosts_curs CURSOR FOR SELECT name,ipaddr FROM hosts

-- открываем курсор OPEN hosts_curs

-- обходим в цикле таблицу, получая по одной строке за один раз -- до тех пор, пока не получим ошибку FETCH hosts_curs INTO shostname,gip WHILE (@@fetch_status = 0) BEGIN

PRINT "----"

PRINT (Briostriame

PRINT @ip

FETCH hosts_curs INTO Shostname.^iD END -- закрываем курсор (это не обязательно если -- далее следует DEALLOCATE) CLOSE hosts._curs

-- снимаем определение (unde'ine) курсора DEALLOCATE hosts_curs

В результате получается следующее:

shimmer 192.163.1.11

bendir 192.168.1.3

sander 192.168.1.55

Sulawesi 192.168.1.12



Содержание раздела