日期:2014-05-16  浏览次数:21096 次

存储过程 不用临时表,也不用OUT参数,如何返回结果集

这是一个测试例子
SQL code

DROP PROCEDURE IF EXISTS Pro_test;

CREATE PROCEDURE Pro_test()
   BEGIN
      DECLARE ret       REAL;
      DECLARE no_more_departments INT;

      DECLARE cursor_name CURSOR
      FOR
      SELECT a FROM tbl_mytest;
      DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_departments=1;

      DROP TABLE IF EXISTS tbl_temp;
      CREATE TEMPORARY TABLE IF NOT EXISTS tbl_temp
      (
           `tmp_ret` REAL ,
      ) ;

      SET no_more_departments = 0;

      OPEN cursor_name;

      REPEAT
         FETCH cursor_name INTO ret;
            SET ret = ret*PI*100/180;
            INSERT INTO tbl_temp  VALUES (ret);

      UNTIL no_more_departments
      END REPEAT;

      CLOSE cursor_name;

      SELECT tmp_ret  FROM tbl_temp ORDER BY tmp_ret;
   END;



------解决方案--------------------
MYSQL目前版本无此功能。

你可以通过在存储过程中执行SELECT语句返回结果集给应用程序。但无法返回给其它存储过程使用。
------解决方案--------------------
function 可以实现你的功能,和procedure 差不多。
------解决方案--------------------
存储过程实现不了具体的功能。
考虑一下函数。
------解决方案--------------------
MYSQL目前不支持返回结果集,只能用表保存,再访问表