Это не становится более простым, чем использование каналов, которые поддерживаются на каждой ОС, которую я знаю и могу быть получен доступ на в значительной степени каждом языке.
Выезд этот учебное руководство.
Что-то вроде этого должно помочь (однако, прочтите после фрагмента для получения дополнительной информации)
CREATE PROCEDURE GetFilteredData()
BEGIN
DECLARE bDone INT;
DECLARE var1 CHAR(16); -- or approriate type
DECLARE Var2 INT;
DECLARE Var3 VARCHAR(50);
DECLARE curs CURSOR FOR SELECT something FROM somewhere WHERE some stuff;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET bDone = 1;
DROP TEMPORARY TABLE IF EXISTS tblResults;
CREATE TEMPORARY TABLE IF NOT EXISTS tblResults (
--Fld1 type,
--Fld2 type,
--...
);
OPEN curs;
SET bDone = 0;
REPEAT
FETCH curs INTO var1,, b;
IF whatever_filtering_desired
-- here for whatever_transformation_may_be_desired
INSERT INTO tblResults VALUES (var1, var2, var3 ...);
END IF;
UNTIL bDone END REPEAT;
CLOSE curs;
SELECT * FROM tblResults;
END
Несколько моментов, которые следует учитывать ...
Относительно фрагмента выше:
В более общем смысле: пытается избежать необходимости в курсоре .
Я специально назвал курсорную переменную curs [e], потому что курсоры - это смешанное благо.Они могут помочь нам реализовать сложные бизнес-правила, которые может быть трудно выразить в декларативной форме SQL, но затем это заставляет нас использовать процедурную (императивную) форму SQL, которая является общей особенностью SQL, которая не очень удобна / выразительный, с точки зрения программирования и часто менее эффективный с точки зрения производительности.
Возможно, вы можете попытаться выразить желаемое преобразование и фильтрацию в контексте «простого» (декларативного) SQL-запроса.
Может быть, вы сможете выразить желаемое преобразование и фильтрацию в контексте «простого» (декларативного) SQL-запроса.
Может быть, вы сможете выразить желаемое преобразование и фильтрацию в контексте «простого» (декларативного) SQL-запроса.
Использование курсоров.
Курсор можно рассматривать как буферизованный считыватель при чтении документа. Если вы думаете о каждой строке как о строке в документе, тогда вы читаете следующую строку, выполняете свои операции, а затем перемещаете курсор.