【问题标题】:How to return table from MySQL function如何从 MySQL 函数返回表
【发布时间】:2014-05-02 14:47:45
【问题描述】:
CREATE FUNCTION myFunction(id INT) RETURNS TABLE  
BEGIN  
   RETURN SELECT * FROM board;  
END  

此查询给出以下错误:

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TABLE  

【问题讨论】:

    标签: mysql


    【解决方案1】:

    根据documentation on user defined functions in MySQL
    你只能返回{STRING|INTEGER|REAL|DECIMAL}类型的值

    CREATE [AGGREGATE] FUNCTION function_name RETURNS {STRING|INTEGER|REAL|DECIMAL}
        SONAME shared_library_name
    

    如果您想读取select 结果集,您必须定义procedure 而不是function

    DELIMITER //
    
    DROP PROCEDURE IF EXISTS myProcedure //
    
    CREATE PROCEDURE 
      myProcedure( id INT )
    BEGIN  
       SELECT * FROM board
         -- add where condition if required
        WHERE Col_name = id
       ;  
    END 
    //
    
    DELIMITER ;
    

    你可以像这样调用过程

    call myProcedure( 6 )
    

    根据过程中使用的语句返回隐式对象。

    【讨论】:

    • 创建过程 myProcedure(id INT) BEGIN SELECT * FROM board WHERE id = id ; END //检查与您的 MySQL 服务器版本相对应的手册,以在第 5 行的 '' 附近使用正确的语法
    • CREATE PROCEDURE myProcedure(id INT) BEGIN select * from board; END // 检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的 '' 附近使用正确的语法
    • 由于我们不能在另一个SP中使用SP的结果,所以如果你想在返回表之前进行一些计算,然后在另一个SP中使用结果是没有办法的?
    猜你喜欢
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多