mysql - 有什么方法可以同时存储 SELECT 结果并输出结果集吗?

标签 mysql sql select stored-procedures resultset

在下一个示例过程中,我可以将查询表中的行作为过程结果集输出,同时将单个字段或某些字段存储在变量中(与使用 SELECT INTO 时类似)吗?我能想到的唯一方法是重复查询。

CREATE PROCEDURE `Panel_TerminalesForm`(IN idTerminal INT)
  BEGIN
    declare somefield INT:
    -- this select statement returns the found row as a resultset
    SELECT terminales.*
    FROM terminales
    WHERE id_terminal = idTerminal;
    -- but I also want to have here a table field inside the variable somefield
    -- do some manipulation with somefield...
END;

最佳答案

如果我理解正确的话,您需要创建一个临时表,然后您可以按照您想要的方式操作临时表。

MySQL:

    CREATE PROCEDURE `Panel_TerminalesForm`(IN idTerminal INT)
        BEGIN
          declare somefield INT

          CREATE TEMPORARY TABLE SampleTempTable
          SELECT * INTO SampleTempTable FROM terminales WHERE id_terminal = idTerminal;

          -- output the resultset
          SELECT * FROM SampleTempTable   

          -- read the variables you want
          SELECT field INTO somefield FROM SampleTempTable   

          -- Drop the temp table
          DROP TEMPORARY TABLE SampleTempTable
    END;

http://www.mysqltutorial.org/mysql-temporary-table/

SQL Server:

    CREATE PROCEDURE `Panel_TerminalesForm`(IN idTerminal INT)
        BEGIN
          declare somefield INT

          SELECT terminales.* 
          INTO #tempSample FROM terminales
          WHERE id_terminal = idTerminal;

          SELECT * FROM #tempSample

          -- Drop the temp table
          DROP TABLE #tempSample
    END;

注意:使用后删除临时表以避免错误。

关于mysql - 有什么方法可以同时存储 SELECT 结果并输出结果集吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33120111/

相关文章:

php - Mysql Create Table If Not Exists else....信息模式

mysql - 如何将多行插入MySQL

PHPbb DBAL 拒绝执行正确的 PHP 和 SQL

php - 如何更新codeigniter中的图像?

sql - 如何获得列的总和,其中另一列的计数 = 1

sql - T-SQL - 两个日期之间的总差

MySQL Where OR 查询结果一个别名

mysql - 根据多列值在表中搜索

mysql - 根据先前的 select 语句更新行

mysql - 谁能给我一个带有 CASE 语句的 SELECT 示例