我正在编写一个存储过程,它将执行 SELECT,用游标循环遍历它,执行一些稍微复杂的处理,然后以修改后的形式返回一些行。
执行此操作的一种方法是创建一个临时表,将处理结果插入其中,然后使用
select * from temp_table;
完成该过程
我想知道是否可以跳过该部分并将计算的行直接流式传输到客户端,而不涉及临时存储的开销。
存储过程中的每个无界
SELECT
都会向线路写入一个单独的结果集。将它们组合成单个结果集的唯一方法是使用临时表,然后在完成后从其中SELECT
。
more_results
来迭代多个结果集,这会告诉您是否有更多结果可用。当你的程序完成时它返回 false。
MySQL 用于实际写入这些多个结果集的机制非常轻量级,因此这取决于这是否适合您想要做的事情,这在您的应用程序中是否有用。
是,通过定义输出参数
CREATE DEFINER=`root`@`localhost` PROCEDURE `Jahr_Monat`(
IN in_jahr int,
OUT out_mon_int int,
OUT out_monat VARCHAR(50),
OUT out_mon int,
OUT out_quartal int,
OUT out_halbjahr int,
OUT out_jahr int
)
BEGIN
IF in_jahr IS NULL THEN
SET in_jahr=YEAR(CURRENT_DATE());
END IF;
Select 1 `Mon_int`,'Januar' `Monat`, 'JAN' `MON`,1 `Quartal`,1 `Halbjahr`,in_jahr `Jahr` UNION
Select 2 `Mon_int`,'Februar' `Monat`, 'FEB' `MON`,1 `Quartal`,1 `Halbjahr`,in_jahr `Jahr` UNION
Select 3 `Mon_int`,'März' `Monat`, 'MÄR' `MON`,1 `Quartal`,1 `Halbjahr`,in_jahr `Jahr` UNION
Select 4 `Mon_int`,'April' `Monat`, 'APR' `MON`,2 `Quartal`,1 `Halbjahr`,in_jahr `Jahr` UNION
Select 5 `Mon_int`,'Mai' `Monat`, 'MAI' `MON`,2 `Quartal`,1 `Halbjahr`,in_jahr `Jahr` UNION
Select 6 `Mon_int`,'Juni' `Monat`, 'JUN' `MON`,2 `Quartal`,1 `Halbjahr`,in_jahr `Jahr` UNION
Select 7 `Mon_int`,'Juli' `Monat`, 'JUL' `MON`,3 `Quartal`,2 `Halbjahr`,in_jahr `Jahr` UNION
Select 8 `Mon_int`,'August' `Monat`, 'AUG' `MON`,3 `Quartal`,2 `Halbjahr`,in_jahr `Jahr` UNION
Select 9 `Mon_int`,'September' `Monat`, 'SEP' `MON`,3 `Quartal`,2 `Halbjahr`,in_jahr `Jahr` UNION
Select 10 `Mon_int`,'Oktober' `Monat`, 'OKT' `MON`,4 `Quartal`,2 `Halbjahr`,in_jahr `Jahr` UNION
Select 11 `Mon_int`,'November' `Monat`, 'NOV' `MON`,4 `Quartal`,2 `Halbjahr`,in_jahr `Jahr` UNION
Select 12 `Mon_int`,'Dezembr' `Monat`, 'DEZ' `MON`,4 `Quartal`,2 `Halbjahr`,in_jahr `Jahr`
;
END
CALL Jahr_Monat(NULL, @out_mon_int,
@out_monat,
@out_mon ,
@out_quartal ,
@out_halbjahr ,
@out_jahr ) ;
Mon_int Monat MON Quartal Halbjahr Jahr 1 一月 1 1 2024 2 月 2 日 2024 年 2 月 1 日 3 三月 1 1 2024 4 月 4 日 2024 年 4 月 2 1 日 5 麦麦 2 1 2024 6 六月 2024 年 6 月 2 1 日 7 月 7 月 3 2 2024 八月 8 八月 3 2 2024 九月 9 日 九月 3 2 2024 10 十月 OKT 4 2 2024 十一月 11 十一月 4 2 2024 12 十二月 DEZ 4 2 2024