How to return table from MySQL function

后端 未结 1 1821
遥遥无期
遥遥无期 2020-12-09 00:44
CREATE FUNCTION myFunction(id INT) RETURNS TABLE  
BEGIN  
   RETURN SELECT * FROM board;  
END  

This query gives following error:



        
相关标签:
1条回答
  • 2020-12-09 01:03

    As per documentation on user defined functions in MySQL
    you can only return values of type {STRING|INTEGER|REAL|DECIMAL}

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

    If you want to read a select resultset you have to define a procedure but not 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 ;
    

    And you can call procedure like

    call myProcedure( 6 )
    

    That returns implicit objects based on the statements used in the procedure.

    0 讨论(0)
提交回复
热议问题