Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Работа с курсором на языке MySql:
MySql >delimiter //
->create procedure proc1(out tov varchar(25))
->begin
->DECLARE cur CURSOR for select Tovar from sclad
->where price = (select min(price) from sclad)
->open cur
->fetch cur into tov
->close cur
->end
->//
MySql >delicimer
Работа с курсором на языке T-SQL:
CREATE PROCEDURE MyProc AS
DECLARE Mycur CURSOR FOR
SELECT tovar,price FROM Sclad WHERE price > 2000
FOR READ ONLY
OPEN Mycur
DECLARE @tovar VARCHAR(40)
DECLARE @price INT
FETCH NEXT FROM Mycur INTO @tovar, @price
PRINT @tovar + str(@price)
CLOSE Mycur
DEALLOCATE Mycur
Fetch – переход к следующей записи. Deallocate – удаляет курсор.
На ряду с NEXT используется: PRIOR (переход назад), FIRST, LAST, ABSOLUTE 4/-4 (переход к 4й записи сначала/к 4й записи с конца), RELATIVE 2 (перейти вперёд на 2 записи от текущей).
Пример:
CREATE PROCEDURE myproc AS
DECLARE @n INT
DECLARE mycur CURSOR SCROLL FOR
SELECT Tovar, price FROM sclad FOR
READ ONLY
OPEN mycur
DECLARE @tovar VARCHAR(40)
DECLARE @price INT
SET @n = 0
WHILE(@n < @@CURSOR_ROWS)
BEGIN
SET @n = @n+1
FETCH ABSOLUTE @n FROM mycur
INTO @tovar, @price
END
PRINT Tovar + str(price)
CLOSE mycur
DEALLOCATE mycur
Курсор в SQL – это область в памяти базы данных, которая предназначена для хранения последнего оператора SQL. Если текущий оператор – запрос к базе данных, в памяти сохраняется и строка данных запроса, называемая текущим значением, или текущей строкой курсора. Указанная область в памяти поименована и доступна для прикладных программ.
Обычно курсоры используются для выбора из базы данных некоторого подмножества хранимой в ней информации. В каждый момент времени прикладной программой может быть проверена одна строка курсора. Курсоры часто применяются в операторах SQL, встроенных в написанные на языках процедурного типа прикладные программы. Некоторые из них неявно создаются сервером базы данных, в то время как другие определяются программистами.
Дата публикования: 2015-02-03; Прочитано: 305 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!