【问题标题】:MySQL Procedure multiple resultsMySQL过程多个结果
【发布时间】:2011-10-28 09:46:41
【问题描述】:

基本的想法是,当我调用一个过程时,我想获得一组数据而不仅仅是一个值(例如,通过将results 设置为INT 并选择COUNT(id))。 我想知道如何更改此过程以获取多个值...

DELIMITER //
 CREATE PROCEDURE getnames(IN id_in INT,OUT results ???)
    BEGIN
        set results=(select name from people where id>id_in);
    END //
 DELIMITER ;

【问题讨论】:

    标签: mysql procedures


    【解决方案1】:

    除非我误解了,否则您应该能够将您的程序更改为以下内容

    DELIMITER //
      CREATE PROCEDURE getnames(IN id_in INT)
        BEGIN
          select name from people where id>id_in;
        END //
    DELIMITER ;
    

    这将简单地返回选择查询的结果,在本例中为名称集。

    【讨论】:

    • 我发现一篇文章说可以使用游标...但它是用于 Oracle...
    【解决方案2】:

    这里的问题是 MySQL 在存储过程中只允许表列数据类型。遗憾的是,这不包括任何类型的数组、列表或集合类型。

    类似的问题有been asked before。阅读答案 - 它们可能会对您有所帮助。其中之一包括以大 VARCHAR 数据类型传递一个逗号分隔的列表。

    返回结果的另一种方法是将结果存储在“结果表”中,调用该过程,然后从调用代码中引用“结果表”中的结果。

    【讨论】:

      【解决方案3】:

      MySQL 中的参数不能是对象或表。如果要返回多个值,请尝试填充临时表或仅在过程中运行 SELECT 语句并在应用程序中读取数据集。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-14
        • 2013-08-02
        • 1970-01-01
        • 2015-02-07
        相关资源
        最近更新 更多